Перед тем, как голосовать или закрывать дублирующие вопросы, я хочу четко указать, что прочитал старые сообщения на этом сайте и другие. Проблема в том, что они являются старыми (по крайней мере) и не дают действительно хороших примеров.Обработка проверки на стороне сервера формами Ajax и ASP.Net MVC
В настоящее время я использую ASP.Net MVC 2.0 с Ajax.BeginForm
и jQuery Validation
проверкой на стороне клиента, которая работает отлично. Но я бы хотел, чтобы ошибки проверки на стороне сервера отображались как ошибки на стороне клиента (не обязательно удаленные). В настоящее время ошибки на стороне сервера применяются с 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% проверку на стороне клиента?
Если есть какое-либо лучшее решение, я готов переключить технологии, которые я использую.
Спасибо, Лассе Espeholt
Я не думаю, что с момента выпуска MVC 2 произошло что-либо «новое», так как я не уверен, какую новую информацию вы ищете. – jfar
@jfar xVal был создан для 1.0, но это все еще хороший выбор? Я вижу последнее обновление, которое было 1 год назад. Я ищу рекомендацию о том, какое решение я должен использовать из трех (или других решений). –