POCOクラスから継承する強い型のビューがあります。ビューが読み込まれるときに、モデルのプロパティをクエリ文字列値で初期化したい。
ビューロードでは、ViewDataを使用してコードを保存しています:
public ActionResult Data() {
ViewData["QueryStringValue"] = this.Request.QueryString["Param1"]
return View();
}
HTMLマークアップでは、このコードを使用して、非表示の変数のモデルプロパティを初期化します。
<%:Html.HiddenFor(m=>m.Param,
Convert.ToInt32(Html.Encode(ViewData["QueryStringValue"]))) %>
m.paramはバイトタイプです。
リクエストのURLは次のようになります:http:// TestApp / Data / AddData?Param1 = One
View Saveイベントで、モデルバインディングを使用していますが、問題は、コントローラーで初期化されたparamの値が表示されないことです。常にNULLです。
私の保存イベントはコントローラーにマップされます:
[HttpPost]
public ActionResult SaveData(MyData d)
{
string paramValue = d.Param; //this always returns null
BO.Save(d); }
HTMLソースを調べたところ、非表示フィールド自体の値が空白であることがわかりました。以下のコードが機能し、見出し要素にparam値が表示されているため、これが発生している理由がわかりません
<h2> <%=Html.Encode(ViewData["QueryStringValue"]) %> </h2>
私はこれでどこが間違っているのか分かりません。