1

我有一个ModelA模型和一个强类型视图ViewA,类型为ModelA. 如您所知,如果您声明一个带有这样签名的动作说“ActionAPost”:

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

在这种情况下,它将表单上设置的值绑定到 ModelA 实例mod。我想做这样的事情:

视图A:

@ModelAInstance.SomeAttr = ViewBag.SomeAttr;

将一些值静态分配给将由 post 操作处理的模型属性。

编辑:

该值是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" />

现在在您的 post 操作中,您可以通过访问 SomeAttr 属性来获得它

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

}

假设您的 Model ,ModelA有一个SomeAttr属性。MVC Modelbinding 将在发布时将您的输入绑定到模型对象。

于 2012-09-07T20:13:25.610 回答