2009-08-23 74 views
36

说,如果我有这个表在我的数据库:产品如何使用绑定前缀?

它有

ProductId 
ProductName 
ProductType 

现在,不管什么原因,我不能说出我的文本框,产品名称和ProductType所以现在我查看方法是这样的

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

所以,现在通过我的玩耍,没有什么东西会匹配这个产品,因为他们有不同的名字。

所以我想这是哪里前缀会进来,但我不知道如何使用它。我怎么使用它和排除在同一时间。

有人可以举个例子吗?

回答

115

前缀用于如果您认为您有如下...

<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) 

这将确保你的实体产品编号永远不会被设置。

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

+1

很棒的回答。 +1 - 这帮了我。 – Chev 2011-03-17 16:57:29