【发布时间】:2010-02-05 15:57:29
【问题描述】:
我遇到了一个问题,我有一个简单的添加/编辑表单并使用从数据注释生成的客户端验证 (jQuery/MicrosoftMvcJQueryValidation.js),并通过在我的视图中调用以下命令启用客户端:
<% Html.EnableClientValidation(); %>
这似乎适用于大多数元素,但是我有一个实例,其中我有一个布尔属性,它使用以下方法呈现为复选框:
<%= Html.EditorFor(model => model.Chargeable)%>
可以是真/假(勾选/未勾选)。
由于 bool 是一种值类型,并且不可为空,因此它被呈现为必需属性,并在提交表单时显示错误(客户端),显示“需要 Chargeable 字段”。但是,作为生成的 HTML 分为两部分(复选框和隐藏值),它将通过回发验证。
在浏览了 MVC 2 源代码后,我暂时设法进行了“快速而肮脏”的修复,即设置:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
还有其他人对我如何解决这个问题有任何想法或建议吗?
IMO,我认为 MVC 不应该为使用 Html.EditorFor/Html.CheckBox(For) 方法呈现的复选框设置客户端所需的验证器。
注意:我正在使用来自匹配 MVC Futures 版本的 ASP.NET MVC 2 RC2 和 MicrosoftMvcJQueryValidation.js。
【问题讨论】: