我正在使用MVC 4创建一个Web应用程序。
我的视图模型中有一些属性已使用所示属性进行修饰,如图所示
[Required(ErrorMessageResourceName = "StateRequiredMessage", ErrorMessageResourceType = typeof(Resources.Agency.CreateEdit))]
public int? PostalAddressStateId { get; set; }
但在我看来,根据用户从复选框中选择的内容,我会禁用一些已标记为必需的属性。
我使用jQuery禁用控件:
$("#PostalAddressStateId").attr("disabled", true);
然后,当我尝试保存时,它表示该值是必需的。我该如何解决这个问题?
答案 0 :(得分:2)
尝试
ModelState.Remove("PostalAddressStateId");
在您的控制器
答案 1 :(得分:1)
试试这个:
PostalAddressStateId.Attributes.Remove("Required");
您可能需要在javascript中设置布尔值并将其发送回控制器,所需的属性也会影响您的服务器端代码。
在我看来,除非始终需要,否则不应将此类字段标记为必填字段。如果这是在一个视图模型中,那么我可能会删除该属性并将其替换为自定义属性或其他一些方法来确定它何时填写,并且当它必须填写时#39 ;不是必需的。
有关attributecollections的更多信息:
http://msdn.microsoft.com/en-us/library/system.web.ui.attributecollection.remove(v=vs.110).aspx
答案 2 :(得分:0)
我会在CodePlex上查看MVC Foolproof验证。您可以使用Foolproof附带的RequiredIfTrue属性来解决上述问题。