Хорошо, я получил видовую модель следующим образом:
public class PageViewModel
{
public Item Item { get; set; }
...
public PageViewModel
{ }
public PageViewModel(Item itemWebPage)
{
...
}
}
Я использую форму для редактирования этого элемента, используя маршрут как:
/ Controller / Редактировать / 43
Контроллер использует этот код:
[AcceptVerbs("GET")]
public new ActionResult Edit(int id)
{
...
PageViewModel pageViewModel = new PageViewModel(...);
return PartialView(pageViewModel);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, PageViewModel item)
{
if (ModelState.IsValid)
{
...
// Here, the item.Item.ID is null, I want it to map to the id of the route.
}
return PartialView("Edit", item);
}
То, чего я хочу добиться, - это идентификатор свойства: item.Item.ID, который будет привязан к идентификатору из URL-адреса (маршрута). Однако я не могу заставить его работать. Я пытался использовать атрибут [Bind ()].
Я исправил это сейчас, используя скрытое поле в форме, например:
<%= Html.HiddenFor(model => model.Item.ID)%>
Однако это выглядит немного странно. Я хотел бы знать, есть ли лучший способ сделать это чище?