Asp.net mvc 如何使用绑定前缀?

Asp.net mvc 如何使用绑定前缀?,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,假设我的db:Product中有这个表 它有 ProductId ProductName ProductType 现在,无论出于什么原因,我都无法命名我的文本框ProductName和ProductType,所以现在我的视图方法如下所示 public ViewResult Test([Bind(Exclude ="ProductId")] Product) 所以现在通过我的游戏,没有任何东西可以与这个产品相匹配,因为它们有不同的名称 所以我想这就是前缀的作用,但我不知道如何使用它。我也不知道

假设我的db:Product中有这个表

它有

ProductId
ProductName
ProductType
现在,无论出于什么原因,我都无法命名我的文本框ProductName和ProductType,所以现在我的视图方法如下所示

public ViewResult Test([Bind(Exclude ="ProductId")] Product)
所以现在通过我的游戏,没有任何东西可以与这个产品相匹配,因为它们有不同的名称

所以我想这就是前缀的作用,但我不知道如何使用它。我也不知道如何同时使用它和排除它


有人能给我举个例子吗?

如果在你看来你有

<select name="p.ProductType">....</select>
<input type="text" name="p.ProductName" />
您应该注意,如果您将方法参数命名为p,MVC将自动为您执行此操作

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

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

 public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product)
这将确保实体上的ProductId永远不会被设置


如果您想绑定两个完全不同的字段名,例如Type到ProductType,您可以查看自定义模型绑定,或者自己从FormCollection中抓取字段。

回答得很好+这帮了我的忙。
 public ActionResult([Bind(Prefix="p", Exclude="ProductId")]Product product)