如何使用绑定前缀?

时间:2009-08-23 01:38:23

标签: asp.net-mvc asp.net-mvc-2

说我的db:Product

中是否有这个表

它有

ProductId
ProductName
ProductType

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

public ViewResult Test([Bind(Exclude ="ProductId")] Product)

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

所以我猜这是Prefix会进来但我不知道如何使用它。我也不知道如何使用它并同时排除。

有人可以举个例子吗?

1 个答案:

答案 0 :(得分:126)

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

<select name="p.ProductType">....</select>
<input type="text" name="p.ProductName" />

您可以通过执行类似

的操作将传入的表单绑定到模型的实例
public ActionResult([Bind(Prefix="p")]Product product)

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

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

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

 public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product)

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

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