ajax - 用于 ajax 表单的 ASP.NET MVC 2 服务器端验证

标签 ajax validation asp.net-mvc-2 webforms server-side

我遇到了以下问题。我正在为该网站开发一个表单,这个表单应该有验证。我想使用 native ASP.NET MVC 2 验证功能,但对它很固执。我有一个通过 $.get 加载并使用 jQuery UI 模式对话框显示的表单。我找到的所有示例都说明了如何使用简单表单的 MVC 验证并避免使用 Ajax 表单。

我可以为此表单启用客户端验证,但我需要正确处理服务器端验证。如何处理 ajax 表单的服务器端验证模型错误?

最佳答案

当您将对象传递回 Controller 时,您必须将代码包装在 If ModelState.IsValid

下面是我如何编辑用户的简化版本。第一个“EDIT”将用户对象发送到 View 。第二个“编辑”处理 View 中的帖子。

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

关于ajax - 用于 ajax 表单的 ASP.NET MVC 2 服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290688/

相关文章:

javascript - 获取这些 ajax 值

javascript - 在ie中交换两个 'onclicks'

javascript - 从扩展程序使用 AJAX 访问远程域

c# - 在 MVC 中存储/调用重复代码块

c# - asp.net - linq to sql 简单问题

javascript - AJAX:检查字符串是否为 JSON?

c# - WPF 验证 (IDataErrorInfo) 和制表符聚焦问题

node.js - 处理 Mongoose 验证错误——在哪里以及如何处理?

.net - 自动从 .csv 下载并填充 SQL Server 表

javascript - jquery 的表单验证未触发