0

У меня возникли проблемы с эстетикой и согласованностью, когда речь идет о ошибках проверки на стороне клиента в определенном представлении. Представление состоит из нескольких (дочерних) частичных представлений и является в основном формой, использующей как MVC/Razor's Html.Textbox(), так и Html.TextBoxFor() во многих местах. В некоторых частичных представлениях мне нужны входные данные, которые не должны быть строго типизированы, поэтому только TextBox(), и в этих случаях проверка не приведет к стилизации входных полей на стороне клиента.MVC Html.TextBox (не для) проверка на стороне клиента

Я знаю, что ModelState не является действительной и Html.ValidationSummary() показывает правильные сообщения об ошибках валидации ошибок, вызванных как TextBox() х и TextBoxFor() лет. Однако только TextBoxFor() получает класс: «ошибка ввода-вывода»

Вопрос: Как мне поменять красный цвет TextBox() при ошибке? (Проще говоря). Я полагаю, что отсутствует значение или атрибут, который запускает проверка JQuery.

Код:

Работы: @Html.TextBoxFor(x => x.Owner, new { @class = "form-control" })

не делает: @Html.TextBox(name, Model.Name, new { @class = "form-control" })

HTML выход

Работы: <input class="input-validation-error form-control" data-val="true" data-val-required="Input is required." id="Owner" name="Owner" type="text" value="">

не делает: <input class="form-control" id="Applicants_1__Name" name="Applicants[1].Name" type="text" value="">

+0

вы пробовали добавлять свойства данных VAL коду TextBox, например @ Html.TextBox (name, Model.Name, new {@class = "form-control", data-val = "true", data-val-required = "Требуется вход"}) – Whiplash450

+0

Да, за исключением того, что " data-val = "true" ", с дефисом, результаты не могут разрешить символ, но" data_val = "true", data_val_required = "Input is required" тоже не будет работать. – skepnaden

+0

Атрибуты 'data-val- *' добавьте html-помощники, прочитав 'ModelMetadata' этого свойства. Поскольку значение' name' не является свойством в вашей модели, читать нечего, поэтому они не будут добавлены! Используйте сильные типы помощников (и если вы подумайте, что вы не можете, тогда вы делаете это неправильно) –

ответ

0

Лично я бы просто сделал проверку в jquery, а затем вы можете настроить все, что вам нужно.

вы можете установить css текстового поля ввода, чтобы он был легко красным;

$("#myInput").css("border", "1px solid red"); 

и сбросить его с помощью

$("#myInput").css("border", "none") 
+0

У меня уже есть форма с 20 + входами, которые хорошо проверяют серверную сторону, и все ошибки возвращаются.TextBoxFor() получает стиль, а другие - нет. Просто нужно знать существенное различие при объявлении двух, что отключает запуск стилей на стороне клиента как-то. – skepnaden

+0

Хорошо. Просто из интереса, почему вы должны использовать TextBox вместо TextBoxFor ..? – Whiplash450

+0

Не может быть сильно набрано, потому что у него есть уникальный идентификатор, привязанный к нему. Мне нужно разделить между несколькими дочерними элементами/объектами с теми же типами входов, следовательно, var «name» в коде выше, который отображает: id = «Applicants_1__Name» name = «Заявители [1] .Name – skepnaden