コントローラに次のようなアクションがあります。
[HttpPost]
public ActionResult Edit(EditMyObjectViewModel editMyObjectViewModel)
{
}
EditMyActionViewModel
が含まれていますMyObject
これは編集ビューに渡されます(上記のコントローラーアクションのGETバージョン)
ポストインされたとき、IDが設定されていません
。コントローラーを次のように変更した場合:
[HttpPost]
public ActionResult Edit(Guid id, EditMyObjectViewModel editMyObjectViewModel)
{
editMyObjectViewModel.ID = id;
}
それはうまくいきますが、少し間違っているようですか?
ビューの非表示フィールドをModel.IDにバインドすることもできると思いますか?
ここでの慣習は何ですか?
編集
モデル/ViewModelsは次のとおりです。
public class EditMyObjectViewModel
{
public IEnumerable<SomeItem> SomeUnrelatedStuff { get; set; }
public MyObject MyObject { get; set; }
}
public class MyObject
{
public guid ID { get; set; }
public string Name { get; set; }
}
ビューは次のとおりです。
@model MyApp.Models.EditMyObjectViewModel
@using (Html.BeginForm("Edit", "License", FormMethod.Post, new { @class = "form form-horizontal" }))
{
@Html.TextboxFor(x=>x.MyObject.Name);
<input type="submit" class="btn btn-success" value="Create Modification" />
}