mvc在某个字段上停止客户端验证?

时间:2014-05-19 13:06:35

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

我的模型中有以下属性:

    [DisplayName("Pay to RE Date")]
    public DateTime? PaymentToRE { get; set; }

每当我输入的内容不是有效日期时,我都会收到消息:

The value 'asdas' is not valid for Pay to RE Date.

但是,我不想在此时进行验证,因为我还需要验证其他属性并希望所有属性一起验证。其他人要求我在数据库中查找信息,所以我不想在这个领域进行客户端验证。无论如何禁用它?

这在我的视图中使用如下:

            @Html.LabelFor(model => model.PaymentToRE, new { @class = "control-label col-md-2" })
            <div class="col-md-4">
                @{Html.EnableClientValidation(false);}
                @Html.TextBoxFor(model => model.PaymentToRE, "{0:MM/dd/yyyy}", new { @class = "datepicker-input form-control" })
                @{Html.EnableClientValidation(true);}
                @Html.ValidationMessageFor(model => model.PaymentToRE)
            </div>

我尝试使用Html.EnableClientValidation方法,但这似乎并没有阻止它。我不想为整个应用程序禁用ClientValidation,因为我需要在其他表单上使用它。

3 个答案:

答案 0 :(得分:4)

我猜你正在使用jQuery验证插件。您可以使用其选项ignorehttp://jqueryvalidation.org/validate/#ignore

向您的文本框添加一个忽略类:

@Html.TextBoxFor(model => model.PaymentToRE, "{0:MM/dd/yyyy}", new { @class = "datepicker-input form-control no-client-validation" })

将jQuery验证选项ignore添加到新类no-client-validation

$.validator.setDefaults({
    ignore: '.no-client-validation, :hidden' //:hidden is default value
});

修改

或者你切换到远程验证,在你的情况下可能是开销。

http://msdn.microsoft.com/en-us/library/gg508808%28vs.98%29.aspx

答案 1 :(得分:1)

使用此:

    $('form').validate({
        ignore:"#PaymentToRE"
    });

验证插件将忽略id=PaymentToRE

的输入

答案 2 :(得分:-2)

您无法在DateTime属性中指定字符串值,请将您的属性更改为此

[DisplayName("Pay to RE Date")]
public String PaymentToRE { get; set; }