【发布时间】:2014-02-12 04:05:02
【问题描述】:
我有一个表格,其中包含 11 个送货地址字段和 11 个帐单地址字段以及一个名为“送货地址与帐单地址相同”的复选框。选中该框后,我使用 jquery 在包含送货地址输入的 div 上调用 .hide() 。然后如何禁用送货地址字段的客户端和服务器端验证?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 validation
我有一个表格,其中包含 11 个送货地址字段和 11 个帐单地址字段以及一个名为“送货地址与帐单地址相同”的复选框。选中该框后,我使用 jquery 在包含送货地址输入的 div 上调用 .hide() 。然后如何禁用送货地址字段的客户端和服务器端验证?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 validation
为 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)
【讨论】:
@布拉德,
在 MVC 2 中,需要使用 MVC Contrib 中提供的 Foolproof 验证,因为它是开箱即用的模型感知验证。然后它会要求您使用RequiredIf 属性,以便仅在选中复选框时才需要运输字段。您仍然可以使用 jquery 隐藏/显示字段。
在 MVC 3 中,内置了模型感知验证,但我认为其他人可以在这里填写我如何做你需要的事情。也许MVC本身就有RequiredIF属性。
如果您需要更多帮助,我相信我什至可以提供更多帮助和代码示例。
【讨论】:
将 [RequiredIf] 等自定义属性添加为 explained here。
【讨论】: