【问题标题】:How to use Bind Prefix?如何使用绑定前缀?
【发布时间】:2010-11-21 23:56:15
【问题描述】:

如果我的数据库中有这张表:产品

ProductId
ProductName
ProductType

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

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

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

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

谁能给我一个例子?

【问题讨论】:

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


    【解决方案1】:

    如果在您看来,前缀的用法如下...

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

    您可以通过执行以下操作将传入的表单绑定到模型的实例

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

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

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

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

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

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

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

    【讨论】:

    • 很好的答案。 +1 - 这帮助了我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多