【问题标题】:Required Attribute for bool value type when used as checkbox用作复选框时布尔值类型的必需属性
【发布时间】: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。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    我想最简单的处理方法是在我想从中删除客户端验证的元素(主要是复选框)上调用 rules("remove", [rules]) 函数:

    <script type="text/javascript">
      $(document).ready(function() {
        $('#Chargeable').rules('remove', 'required');
      });
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2017-01-09
      相关资源
      最近更新 更多