POSTアクションのための別のViewModel:ASP.net MVC - 私はこれに似たビューモデルを持っている私のMVCアプリケーションで
public class ComplexViewModel
{
public ComplexDetailsViewModel Details1 { get; set; }
public ComplexDetailsViewModel Details2 { get; set; }
}
public class ComplexDetailsViewModel
{
public int Id { get; set; }
public string DisplayValue1 { get; set; }
public string DisplayValue2 { get; set; }
// ...
}
私はもともと私の見解では、次のやっていた
:
@Html.HiddenFor(model => model.Details1.Id)
@Html.HiddenFor(model => model.Details2.Id)
@Html.DisplayFor(model => model.Details1.DisplayValue1)
...
を
私はコントローラにフルモデルをPOSTします:
public ActionResult Post(ComplexViewModel model)
私は実際にComplexViewModからは何もする必要はありません同上値を除くエルので、私はデータを掲示するために特別に使用される別のビューモデルを作成することにしました:
public class PostViewModel
{
public int Details1Id { get; set; }
public int Details2Id { get; set; }
}
public ActionResult Post(PostViewModel model)
問題は、今私の@HiddenFor(model => model.Details1.Id)
が実際にPOSTされます何もないので、私のPOSTモデルにマップされないということです。
HiddenFor
ヘルパーを使用しているときに、私のPOSTモデルと私のGETモデルに別々の構造を持たせる方法はありますか?
私はこれを行うことができることを知っていましたが、私はまだヘルパーを使用する方法があることを望んでいました。しかし、これが当てはまるとは思われません。 – Dismissile
これを行うには@ Html.HiddenFor()の代わりに@ Html.Hiddenを使用できます。 – hawkke
はい、私はHiddenForを使うことを望んでいました。自動的に入れ子になったテンプレートのプレフィックスを追加するからです。 – Dismissile