1

モデルと、型付けさModelAれた強く型付けViewAされたビューがありModelAます。ご存知のように、アクションを宣言する場合は、次のような署名で「ActionAPost」と言います。

[HttpPost]
public ActionResult ActionAPost(ModelA mod) {
  // code
}

この場合、フォームに設定された値を ModelA インスタンスにバインドしますmod。私はこのようなことをしたい:

ビューA:

@ModelAInstance.SomeAttr = ViewBag.SomeAttr;

ポスト アクションによって処理されるモデル属性に値を静的に割り当てます。

編集:

値はViewBang以前に設定されています。

4

2 に答える 2

4

そのため、ビューには、name 属性がモデルとプロパティのオブジェクト パスを反映する隠し要素があります。このようにして、希望どおりに POST アクションにバインドされます

例:

<input type="hidden" name="SomeAttr" value="@ViewBag.SomeAttr" />

Razor とそのViewBag価値

リクエストのモデルに値を設定してGETから、かみそりで設定します。

@Html.Hidden("SomeAttr", (object)ViewBag.SomeAttr);

@Html.HiddenFor(m => m.SomeAttr, new { value = ViewBag.SomeAttr });

于 2012-09-07T20:06:54.337 に答える
1

ViewModel のプロパティ名と同じ名前で、フォームに隠し変数を作成します。

<input type="hidden" name="SomeAttr" value="@ViewBag.SomeAttr" />

投稿アクションで、 SomeAttr プロパティにアクセスすることでこれを取得できます

public ActionResult Add(ModelA model)
{
  //check for model.SomeAttr here

}

Model にModelASomeAttrプロパティがあると仮定します。MVC Modelbinding は、投稿時に入力をモデル オブジェクトにバインドします。

于 2012-09-07T20:13:25.610 に答える