【问题标题】:Prevent validation for part of a form in asp.net MVC 3防止验证asp.net MVC 3中的部分表单
【发布时间】:2014-02-12 04:05:02
【问题描述】:

我有一个表格,其中包含 11 个送货地址字段和 11 个帐单地址字段以及一个名为“送货地址与帐单地址相同”的复选框。选中该框后,我使用 jquery 在包含送货地址输入的 div 上调用 .hide() 。然后如何禁用送货地址字段的客户端和服务器端验证?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 validation


    【解决方案1】:

    为 MVC4(或 3)中的 RequiredIf 属性尝试此解决方案,可在

    http://cchitsiang.blogspot.com/2011/04/requiredif-conditional-validation-if.html

    可以允许用户根据选中的复选框提交不完整的表单或完全验证的表单。确保在RequiredIfAttribute.cs 中更改以下内容

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = true)]

    参考上面提到的链接,

    对于要验证的下拉列表,请确保在 model.cs 文件中执行以下操作

    在所有变量的底部添加 IsCompleted 布尔变量

        [Display(Name = "Completed")]
        public bool IsCompleted { get; set; }
    

    对于要验证的下拉列表,传递控制器中 ViewBag 中的 DBset,例如,

     ViewBag.Relationships = db.Relationships; 
    

    在视图中,如下添加下拉菜单

    @Html.DropDownListFor(model => model.RelationshipId, new     SelectList(ViewBag.Relationships, "RelationshipId", "RelationshipName"), "--- Select ---")   <br />
                                     @Html.ValidationMessageFor(model => model.RelationshipId)
    

    【讨论】:

      【解决方案2】:

      @布拉德,

      在 MVC 2 中,需要使用 MVC Contrib 中提供的 Foolproof 验证,因为它是开箱即用的模型感知验证。然后它会要求您使用RequiredIf 属性,以便仅在选中复选框时才需要运输字段。您仍然可以使用 jquery 隐藏/显示字段。

      在 MVC 3 中,内置了模型感知验证,但我认为其他人可以在这里填写我如何做你需要的事情。也许MVC本身就有RequiredIF属性。

      如果您需要更多帮助,我相信我什至可以提供更多帮助和代码示例。

      【讨论】:

      • 我已经解决了这个问题,方法是使用 JavaScript 将帐单地址字段中的值放入送货地址字段,但我不想这样做。似乎没有任何跨字段验证属性可以做到这一点,所以我想我可以构建一个模式化的 CompareAttribute。有人有这个已经建好的例子吗?谁知道 MVC 3 的 MVC Contrib 什么时候发布?
      【解决方案3】:

      将 [RequiredIf] 等自定义属性添加为 explained here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-11
        • 2011-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多