次のようなモデルクラスがあります
public class Mod
{
public string StaticProp1 {get; set;}
public string StaticProp2 {get; set;}
public string EditableProp1 {get; set;}
}
EditableProp1
編集はできるがStaticProp1
、が表示されているが編集できないビューが必要ですStaticProp2
。
強く型付けされたビューを作成しました:
@model Mod
@using (Html.BeginForm())
{
<p>@Model.StaticProp1</p>
<p>@Model.StaticProp2</p>
@Html.TextBoxFor(m => m.EditableProp1)
<input type="submit" value="Save" />
}
私のコントローラーでは、アクションを処理すると、EditableProp1 が適切であることがわかります。
[HttpPost]
public ActionResult Edit(Mod model, FormCollection collection)
{
string editableProp = model.EditableProp1; //This works fine
string staticProp1 = model.StaticProp1; //Missing
return View(model);
}
staticProp1 が null になり、ビューがそれを表示できないため、何らかの理由でポストバックすると問題が発生します。
私は追加できることを知っています
@Html.HiddenFor(m => m.StaticProp1)
@Html.HiddenFor(m => m.StaticProp2)
私の見解ではうまくいくと思いますが、別のより良い方法があるかどうか疑問に思っています。
私の値はすでにフォーム ( <p>@Model.StaticProp1</p>
) にあります。そのような編集不可能なタグにモデルをバインドする方法はありますか? このようなことを行う HTML ヘルパーはありますか?
ちなみに、明らかでない場合は、私は MVC を使い始めたばかりなので、ポイントを完全に見逃している場合はお知らせください。