Прежде чем отказаться от голосования или закрытия дублирующих вопросов, я хочу прояснить, что я прочитал старые посты на этом сайте и другие.Проблема в том, что они (некоторые по крайней мере) и не дают действительно хороших примеров.
В настоящее время я использую ASP.Net MVC 2.0 с Ajax.BeginForm
и jQuery Validation
client-проверка стороны, которая работает отлично.Но я хотел бы, чтобы ошибки проверки на стороне сервера отображались как ошибки на стороне клиента (не обязательно удаленные).Ошибки на стороне сервера в настоящее время применяются с ModelState.AddModelError
.
Я использую код, который расширяет что-то вроде этого:
<% Html.EnableClientValidation(); %>
using (Ajax.BeginForm("Bar", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "result"})) { %>
<fieldset>
<p>
<%: Html.TextAreaFor(model => model.Foo) %>
<%: Html.ValidationMessageFor(model => model.Foo) %>
</p>
<p>
<input type="submit"/>
</p>
</fieldset>
И, как я уже говорил, я устанавливаю ошибки с помощью ModelState.AddModelError
.В настоящее время я возвращаю итоговую справку об ошибке (которая не привязывается к элементам, которая их вызывает) и в противном случае возвращаю свой результат.
До сих пор я сталкивался с несколькими решениями этой проблемы:
- xVal (поддерживает удаленную проверку сервера)
- Установить всю форму в
RenderPartial
и id='result'
. - Вернуть несколько JSON с результатами и сообщениями об ошибках
Но разве нет лучшего решения (может быть, в ASP.Net MVC 3.0)?Является ли xVal по-прежнему хорошим решением (не так много разработки)?
Если я выберу решение JSON, есть ли способ jQuery для присвоения ошибок конкретным элементам, который имитирует 100% клиента?проверка стороны?
Если есть какое-то лучшее решение, я готов изменить используемые мной технологии.
Спасибо, Лассе Эспехолт