ASP.NET MVC 2 проверка на стороне сервера для формы ajax - PullRequest
3 голосов
/ 20 июля 2010

Я столкнулся со следующей проблемой.Я разрабатываю форму для сайта, и эта форма должна пройти валидацию.Я хочу использовать встроенную функциональность проверки ASP.NET MVC 2, но упрямся с этим.У меня есть форма, которая загружается через $ .get и отображается с помощью модального диалогового окна jQuery UI.Все примеры, которые я нашел, объясняют, как использовать проверку MVC с простыми формами и избегать форм Ajax.

Я могу включить проверку на стороне клиента для этой формы, но мне нужно правильно обрабатывать проверку на стороне сервера.Как я могу обработать ошибки модели проверки на стороне сервера для форм ajax?

1 Ответ

1 голос
/ 20 июля 2010

Когда вы передаете свой объект обратно в контроллер, вы должны обернуть ваш код в If ModelState.IsValid

Ниже приведена упрощенная версия того, как я редактирую пользователя.Первый «РЕДАКТИРОВАТЬ» отправляет объект пользователя в представление.Второй «РЕДАКТИРОВАТЬ» обрабатывает сообщение из представления.

Function Edit() As ActionResult
    ''# do stuff to populate your User
    Return View(User)
End Function

<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal user as User)
    If ModelState.IsValid Then
        ''# do your valid stuff
    Else
        ''# The posted form was not valid, send the user back
        Return View(user)
    End If
End Function

Вот то же самое в C #

public ActionResult Edit()
{
    // do stuff to populate your User
    return View(User);
}

[AcceptVerbs(HttpVerbs.Post)]
public object Edit(User user)
{
    if (ModelState.IsValid) {
            // do your valid stuff
    } else {
        //'# The posted form was not valid, send the user back
        return View(user);
    }
}

РЕДАКТИРОВАТЬ:

На ваш взгляд, если выхотите добавить проверку AJAX, просто добавьте следующее.

    <% 
        Html.EnableClientValidation() ''# This is where all the magic happens.  It will build your clientside validation for you out of your MetaData.
        Using Html.BeginForm("Edit", "Users")
    %>

      <!-- all your markup crap -->
            <tr>
                <td>
                    <%: Html.LabelFor(Function(model) model.UserName)%></td>
                <td>
                    <%: Html.TextBoxFor(Function(model) model.UserName) %>
                    <%: Html.ValidationMessage("UserName", "*")%><br />
                </td>
            </tr>

      <!-- somewhere you'll want to add a Validation Summary of all your errors -->
      <%= Html.ValidationSummary("Oops!, please correct the errors...") %>


      <% End Using%>
      <!-- bottom of the page -->

          <script src="../../Assets/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
          <script src="../../Assets/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
          <script src="../../Assets/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

РЕДАКТИРОВАТЬ:

Вот некоторая информация о рендеринге с использованием Ajax.BeginForm
http://singulartechnologies.com/asp-net-mvc-ajax-beginform-sample-code
http://msdn.microsoft.com/en-us/library/dd381533.aspx
http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...