Я полный новичок в MVC и, похоже, не могу разобраться с очень простой концепцией.
У меня есть родительский объект, который содержит коллекцию дочерних объектов.Я хочу создать новый дочерний объект и связать его с родительским объектом, сохраненным в базе данных через EF4
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Child> Children { get; set; }
}
. Пока что в моем самом простом приложении происходит следующее.Мой пользователь переходит на страницу с информацией о родительском объекте, которая включает в себя список текущих дочерних объектов.На этой странице также есть ссылка для добавления нового ребенка.Эта ссылка указывает на действие «Создать» на дочернем контроллере, передавая родительский идентификатор, который, в свою очередь, отображает представление для создания нового дочернего элемента.И вот где я застрял.Я не знаю, как сохранить предоставленный родительский идентификатор, чтобы при нажатии кнопки «Сохранить» я мог извлечь этот родительский объект и добавить свой новый дочерний объект в его коллекцию.
Я, вероятно, подхожу к этому совершенно неправильно, но я не могу найти какие-либо базовые учебники о том, как добавить новые дочерние элементы к родителю, что странно, учитывая, насколько распространенным является сценарий.
Любая помощь действительно приветствуется!
Большое спасибо Джерри
[Обновление 1]
У меня есть два действия CreateChild,изначально генерируется MVC, а затем модифицируется мной.Просто глядя на них, я вижу, что они не делают то, что мне нужно, но я не совсем уверен, как они должны измениться.В частности, я храню родительский идентификатор в ViewBag, но между вызовами действий Create он теряется и поэтому недоступен при вызове второго Create для сохранения нового дочернего элемента в базе данных.
</p>
<pre><code>public ActionResult Create(int parentId)
{
Parent parent = db.Parents.Find(parentId);
ViewBag.ParentId = parent.Id;
return View();
}
[HttpPost]
public ActionResult Create(Child child)
{
if (ModelState.IsValid)
{
Parent parent = db.Parents.Find(ViewBag.ParentId);
parent.Children.Add(child);
db.Children.Add(child);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(child);
}
Еще раз спасибо Джерри