Правильное связывание отношения многие-к-одному в форме с одной функцией post
В этом примере я некоторое время боролся с лучшими практиками, и я не могу понять, что это правильно. Вот модель, которую я пытаюсь выполнить в представлении, а затем привязать ее к модели в сообщении. Это test
тест имеет несколько атрибутов, а также набор testItems
(отношение один ко многим)
Код моделей для вышеуказанной формы будет таким:
public class Test
{
public int TestID { get; set; }
public virtual ICollection<TestItem> TestItems { get; set; }
}
public class TestItem
{
public int TestID { get; set; }
public int TestItemScore { get; set; }
public int? TestID { get; set; }
public virtual Test Test { get; set; }
}
В настоящее время Мои методы для публикации формы будут заключаться в создании метода публикации
это берет модель и затем два массива, один из вопросов и один из ответов, затем они превращаются в объекты в функции post, а затем добавляются в модель, которую я передал функции следующим образом.
public ActionResult PostATest (Test test, string[] questions, string[] answers){
//create a list of test.testItems
//create a new test item class
//loop over the array of questions and add an answer and question to the test item class
//add the test item to the test
//repeat until all questions and answers are added to new object
//save the test object to the db context.
db.tests.save(test);
}
Таким образом, приведенный выше код - это то, как я выполнял большинство из этих общих практик, но с этим есть серьезные проблемы, особенно когда я возвращаюсь назад и пытаюсь создать модель, которую я могу редактировать.
Большая часть HTML должна быть сделана вручную с использованием похожих имен переменных, чтобы сделать строковые массивы связываемыми.
В идеале я хотел бы иметь функцию в своем посте, которая будет просто (функция ниже), которая будет знать, что внутри этой модели много моделей один. Он должен быть гибким, чтобы при отправке формы он автоматически создавал тестовую модель и передавал ее посту, а также создавал модель testItem.
public actionResult testPost(Test test){
}
или, по крайней мере, есть сообщение, что сообщения, как это может быть
public actionResult testPost(Test test, TestItem[] testItem){
}
Я делал это так, как описано выше в первом методе публикации, около месяца, и я не могу найти ЛЮБОГО другого способа сделать это, не превращая каждый элемент в тесте в свою собственную форму.
Тщательный способ решить эту проблему будет принята с благодарностью. Предоставленный код является просто примером кода, если требуется какой-то из моих фактически реализованных кодов, просто спросите. Я сделал это в нескольких разных контекстах, и должен быть лучший способ решения этой проблемы.
Самая большая проблема с тем, как я сейчас это делаю, заключается в том, что мне очень трудно вернуться и отредактировать форму позже так, как я это делаю сейчас.
Пожалуйста, примите к сведению любые вопросы, которые у вас могут возникнуть, о том, как я задал свой вопрос в комментариях, или, если есть что-то, что мне нужно, чтобы было немного яснее.