如何使用绑定前缀?

cho*_*bo2 42 asp.net-mvc asp.net-mvc-2

如果我在db:Product中有这个表,请说

它有过

ProductId
ProductName
ProductType
Run Code Online (Sandbox Code Playgroud)

现在无论出于何种原因我无法命名我的文本框ProductName和ProductType,所以现在我的View方法看起来像这样

public ViewResult Test([Bind(Exclude ="ProductId")] Product)
Run Code Online (Sandbox Code Playgroud)

因此,通过我的游戏,这个产品中没有任何东西可以匹配,因为它们有不同的名称.

所以我猜这是Prefix的用武之地,但我不知道如何使用它.我也不知道如何使用它并同时排除.

有人能举个例子吗?

Joh*_*ter 130

如果您在视图中有前缀,则使用如下前缀...

<select name="p.ProductType">....</select>
<input type="text" name="p.ProductName" />
Run Code Online (Sandbox Code Playgroud)

您可以通过执行类似操作将传入的表单绑定到模型的实例

public ActionResult([Bind(Prefix="p")]Product product)
Run Code Online (Sandbox Code Playgroud)

您应该注意,如果您为方法参数p命名,MVC将自动为您执行此操作.

如果您尝试同时绑定多个实体(例如,两个名称字段),则前缀非常有用.

要将排除绑定用于某些属性(即避免人们以伪造形式传递ProductIds),只需将属性名称设置为排除

 public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product)
Run Code Online (Sandbox Code Playgroud)

这将确保您的实体上的ProductId永远不会被设置.

如果要绑定两个完全不同的字段名称,例如Type to ProductType,您可以查看自定义模型绑定或只是自己从FormCollection中获取字段.

  • 很好的答案。+1 - 这帮助了我。 (2认同)