Хороший вопрос и красиво сформулированный! У меня был точно такой же вопрос, но пока не вижу окончательного ответа. Мне удалось сделать это - по крайней мере с проверкой на стороне сервера - добавив проверку на стороне сервера в контроллере и в представлении, используя помощники HTML вместо пользовательского HTML. Этот пост помог мне:
.input-validation-error для текстового поля при повторном отображении формы с ошибочным значением
Как уже упоминалось в посте, необходимо установить название html, например. поле модели правильно. Поэтому я добавил код проверки на стороне сервера в контроллер. Обратите внимание, что проверенное поле model.theID отличается от имени, добавленного в ModelState "TheDesc":
Код контроллера:
public ActionResult SomeActionIndex(SomeModel model) {
...
if (string.IsNullOrEmpty(model.theID) {
ModelState.AddModelError("theDesc", "The field is uhm... required!");
}
...
}
Комментарии в посте указывают, что для выделения (красная граница через класс CSS) он помогает использовать стандартные помощники HTML, поскольку они автоматически позволяют использовать проверку jQuery.
В моем случае проверенный список автозаполнения изначально НЕ генерировался с использованием помощника HTML, а с использованием некоторого пользовательского HTML во вложенном представлении. Я изменил это.
Просмотр кода:
@Html.TextBoxFor(m => Model.theDesc, new { @class="auto-complete",
@placeholder="choose a value..." })
@Html.TextBoxFor(m => Model.theID, new { @style = "display: none" })
Примечание. Точно такую разновидность черной магии, которую выполняют помощники HTML, чтобы сделать эту работу, я пока не смог выяснить. Поэтому я оставлю это на потом или для кого-то другого, но я думаю, что этот вопрос относится к этому:
пользовательский htmlhelper с поддержкой проверки