ドメインモデルをビューのパラメータとして直接使用するのは悪い習慣だと私はいつも見ています。しかし、それ以外の方法で行うと、非常に複雑でエラーが発生しやすくなります。例:
これが編集するためのビューItemViewModel
です:
@model ItemViewModel
@using (Html.BeginForm())
{
<p>@Html.ValidationSummary()</p>
@Html.LabelFor(o => o.ItemId) : @Html.EditorFor(o => o.ItemId)
@Html.LabelFor(o => o.MyItemProperty) : @Html.EditorFor(o => o.MyItemProperty)
}
そして、これを処理するためのコントローラーメソッドは次のとおりです
public ActionResult Edit(int? id)
{
Item itemViewModel = new ItemViewModel();
if (id != null && id != 0)
{
var item = itemRepository.Items.FirstOrDefault(c => c.Id == id);
if (item != null)
{
itemViewModel.ItemId = item.ItemId;
itemViewModel.MyItemProperty = item.ItemId;
}
}
return View(itemViewModel);
}
[HttpPost]
public ActionResult Edit(ItemViewModel itemViewModel)
{
var item = itemRepository.Items.FirstOrDefault(c => c.Id == itemViewModel.Id);
item.Id = itemViewModel.Id;
item.MyItemProperty = itemViewModel.MyItemProperty;
itemRepository.Save(item);
return View("Success");
}
それは私が再びに変換Item
しなけれItemViewModel
ばならないことを意味しItem
ます。また、に新しいプロパティをItem
追加し、それを変換に追加するのを忘れると、変更が保存されなくなります。
これはあなたがそれをする方法ですか、それとも私は何かを逃しましたか?