说如果我有这个表在我的db:产品
@H_301_2@它有过
ProductId ProductName ProductType@H_301_2@现在无论什么原因,我不能命名我的文本框ProductName和ProductType所以现在我的View方法将如下所示
public ViewResult Test([Bind(Exclude ="ProductId")] Product)@H_301_2@所以现在通过我的游戏什么都不会匹配在这个产品,因为他们有不同的名字。 @H_301_2@所以我想这是前缀进来的地方,但我不知道如何使用它。也不怎么使用它和排除在同一时间。 @H_301_2@有人可以给我一个例子吗?
解决方法
前缀使用如下,如果在您的视图中有…
<select name="p.ProductType">....</select> <input type="text" name="p.ProductName" />@H_301_2@您可以通过执行类似的操作将传入表单绑定到模型的实例
public ActionResult([Bind(Prefix="p")]Product product)@H_301_2@你应该注意,如果你命名你的方法参数p,MVC会自动做到这一点。 @H_301_2@如果您尝试同时绑定多个实体(例如,两个名称字段),则前缀可能非常有用。 @H_301_2@要使用排除绑定到某些属性(即避免人们在伪造表单中传递ProductIds),只需将属性名称设置为排除
public ActionResult([Bind(Prefix="p",Exclude="ProductId")]Product product)@H_301_2@这将确保您的实体上的ProductId永远不会被设置。 @H_301_2@如果您想要绑定两个完全不同的字段名称,例如键入到ProductType,您可以查看自定义模型绑定或只是从自己的FormCollection中获取字段。