MVC3 - метод контроллера для создания данных модели и связи с Guid из другой таблицы / модели
У меня есть 2 модели, каждая из которых имеет много свойств - Object1 и Object2
У меня есть отношения внешнего ключа с ними в SQL DB - Object1 может иметь много Object2
Как создать Object2 в методе Create() моего Object2Controller, как мне связать Object2 с Guid объекта 1?
Вот код:
контроллер:
[HttpPost]
public ActionResult Create(Object2 object2)
{
if (ModelState.IsValid)
{
object2.Object2Id = Guid.NewGuid();
db.Object2.Add(object2);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(object2);
}
1 ответ
Решение
Я вижу только два варианта в этом сценарии:
- Предварительно заполните GUID Object1 в модели, когда вы отправляете его обратно из представления, как и другие свойства. Это может быть выполнено различными способами в зависимости от ваших требований (выбранный пользователем раскрывающийся список, предварительно заполненный в скрытое поле и т. Д.).
- Следите за тем сервером, на котором Object1 работает текущий пользователь. Вы можете сделать это с помощью объекта Session или даже с помощью TempData.
редактировать
Чтобы создать новый объект Object2 из подробного представления Object1, выполните следующие действия.
Во-первых, простая форма в подробном представлении:
@using (var form = Html.BeginForm("Add", "Object2Controller", FormMethod.Get))
{
<input type='hidden' name='Object1ID' value='@Model.Object1ID' />
<submit type='submit' value='Add Object1' />
}
Затем у вас будет метод Add в контроллере для Object2, который предварительно заполняет внешний ключ:
[HttpGet]
public ActionResult Add(Guid Object1ID)
{
Object2 newObj = new Object2();
newObj.Object1ID = Object1ID;
return View("MyAddView", newObj);
}
Это будет указывать на детальную форму Object2, которая отправляет обратно в метод Create в вашем вопросе.