49

假设我的数据库中有这张表:产品

它有过

ProductId
ProductName
ProductType

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

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

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

所以我想这就是 Prefix 的用武之地,但我不知道如何使用它。也不如何同时使用它和排除。

有人可以给我一个例子吗?

4

1 回答 1

140

如果在您看来您有...

<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 永远不会被设置。

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

于 2009-08-23T11:30:05.720 回答