Обязательно, если проверка не завершилась с помощью jquery

116
10

Моя форма продолжает возвращать $ (form).valid() = true, когда это должно произойти.

Моя ViewModel:

public class SearchProvidersViewModel
{
public bool IsClicked { get; set; }

[RequiredIf("IsClicked", true, ErrorMessage ="IsClicked is required")]
public string Name { get; set; }
}

Мой взгляд:

@using (Html.BeginForm("Search", "Home", FormMethod.Post, new { @id = "SearchForm" }))
{

<label class="btn btn-primary" id="IsClicked">
@Html.RadioButtonFor(x => x.IsClicked, true) Name
</label>

@Html.TextBoxFor(x => x.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Name, "", new {
@class = "text-danger" })

<button id="btnSearch" type="submit" class="btn btn-success">Search</button>
}

мой JavaScript:

 $(document).on("click", "#btnSearch", function (e) {
$("#SearchForm").validate();
if ($("#SearchForm").valid()) {
//post form to controller
}

Форма всегда публикуется в контроллере. Если я запускаю $ ("# SearchForm"). Validate() в консоли, я вижу, что currentForm имеет вход # Name, и это имеет правильные атрибуты:

Данные-Val-requiredif,

Данные-Val-requiredif-dependentprpoperty,

Данные-Val-requiredif-dependentvalue

и набор данных имеет правильные значения для каждого.

validity: valueMissing - false, хотя в моем контроллере, когда viewModel передается обратно, значение для IsClicked - true.

Это как-то связано с тем, что валидатор ищет значение IsClicked в "True", но я просто возвращаю значение "true"? Если так - как я могу это исправить? Или это что-то еще полностью?

спросил(а) 2019-05-15T15:58:00+03:00 1 год, 6 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема