Обработка проверки на стороне сервера с помощью форм Ajax и ASP.Net MVC - PullRequest
0 голосов
/ 30 августа 2010

Прежде чем отказаться от голосования или закрытия дублирующих вопросов, я хочу прояснить, что я прочитал старые посты на этом сайте и другие.Проблема в том, что они (некоторые по крайней мере) и не дают действительно хороших примеров.

В настоящее время я использую 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% клиента?проверка стороны?

Если есть какое-то лучшее решение, я готов изменить используемые мной технологии.

Спасибо, Лассе Эспехолт

1 Ответ

2 голосов
/ 30 августа 2010

xVal это хорошо!Я использую его с 2 проектами asp.net mvc 2, и он прекрасно работает.

...