MVC4 プロジェクトでは、ViewModel を使用し、GET フォームを持つ部分ビューを使用しています。コントローラー アクションでは、ViewModel オブジェクトにデータが含まれていることを期待しています。このパーシャルを通常の (.cshtml) ビューに配置すると、コントローラー アクションで予期される ViewModel オブジェクトを介してデータを受け取ります。しかし、このパーシャルを別のパーシャル ビューに配置すると、何らかの理由でコントローラー アクションの ViewModel オブジェクトが空になります。HttpGet フォームの作成をステップ実行すると、渡されたモデルは空ではありませんが、GET コントローラー アクションが呼び出されると、モデルは空になります。
この理由を知っている人はいますか?これは私が知らないMVCの動作ですか?ありがとう!
パーシャル:
@model ViewModel
@if (Model != null)
{
using (Html.BeginForm("DoSomething", "Home", FormMethod.Get))
{
@Html.HiddenFor(m => m.Object)
<input id="btnSend" type="submit">
}
}
その他の部分:
@using OtherViewModel.ViewModel
@Html.Partial("The Partial", Model.ViewModel, ViewData)
景色:
@Html.Partial("_TheOtherPartial", Model.OtherViewModel, new ViewDataDictionary(ViewData) {
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "prefix" }
})
コントローラー
[HttpGet]
[AllowAnonymous]
public ActionResult DoSomething(ViewModel data)
{
}