我遇到了一个问题,其中我具有简单的添加/编辑表单并使用客户端验证(JQuery/MicrosoftmvcjqueryValidation.js),该验证是从数据注释生成的,并通过在我的视图中调用以下内容来启用客户端:

<% Html.EnableClientValidation(); %>

对于大多数元素来说,这似乎很好,但是我有一个实例,我有一个布尔属性,该属性被用作复选框,使用:

<%= Html.EditorFor(model => model.Chargeable)%>

可以是true/fals(滴答/未插入)。

由于Bool是一种值类型,而不是可根据的值,因此它是作为必需属性渲染的,并在提交表单时显示错误(客户端)。但是,作为HTML,生成的是两部分(复选框和隐藏值),它将传递后背验证。

浏览MVC 2源代码后,我暂时设法进行了“快速而肮脏的”修复程序,即设置:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

还有其他人对我如何解决这个问题有任何想法或建议吗?

IMO,我不认为MVC应该设置使用html.editorfor/html.checkbox(For)方法呈现的Checkbox的客户端所需的验证器。

注意:我正在使用匹配的MVC期货版本中的ASP.NET MVC 2 RC2和MicrosoftmvcjqueryValidation.js。

有帮助吗?

解决方案

我想处理它的最简单方法是在我想从以下内容中删除客户端验证的元素(主要是复选框),调用规则(删除”,[规则])函数。

<script type="text/javascript">
  $(document).ready(function() {
    $('#Chargeable').rules('remove', 'required');
  });
</script>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top