mvc остановить проверку на стороне клиента в определенном поле?

У меня есть следующее свойство в моей модели:

    [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 для всего приложения, так как мне это нужно на других формах.


person Paritosh    schedule 19.05.2014    source источник
comment
возможный дубликат jquery отключить проверку правила для одного поля   -  person rareyesdev    schedule 19.05.2014


Ответы (3)


Я предполагаю, что вы используете плагин проверки jQuery. Вы можете использовать его вариант ignore. http://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

person iappwebdev    schedule 19.05.2014

Использовать это:

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

Плагин проверки будет игнорировать ввод с id=PaymentToRE

person rareyesdev    schedule 19.05.2014

Вы не можете присвоить строковое значение в свойстве DateTime, измените свое свойство на это

[DisplayName("Pay to RE Date")]
public String PaymentToRE { get; set; }
person chandresh patel    schedule 19.05.2014
comment
Он не спрашивает о преобразовании какого-либо значения, он просто хочет отключить проверку клиента для определенного свойства. - person iappwebdev; 19.05.2014
comment
@Simon Решение, которое я сказал, - единственный способ, я столкнулся с этой проблемой, и поэтому я знаю. - person chandresh patel; 19.05.2014
comment
Серьезно, я не знаю, в чем ваша проблема, но проблема ОП определенно не такая. И, кстати, я использую вариант проверки jQuery ignore, и он работает очень хорошо... - person iappwebdev; 19.05.2014