Ajax.BeginForm - 显示验证错误(Ajax.BeginForm - Displayi

2019-08-20 01:27发布

使用VS2008中的MVC项目模板(开箱即用)我注意到以下几点:

  1. 下面是如何指定的Register.aspx形式。

     <% using (Html.BeginForm()) { %> 
  2. 选择注册按钮,而不提供任何帐户信息显示这一点。 帐户创建不成功。 请更正错误,然后再试一次。

    •您必须指定一个用户名。
    •您必须指定一个电子邮件地址。
    •您必须指定的6个或更多字符的密码。

  3. 我改变了Register.aspx形式这一点。

     <% using (Ajax.BeginForm("Register", new AjaxOptions { HttpMethod = "Post" })) { %> 
  4. 选择注册按钮而不提供的帐户信息未显示任何错误。

问:我如何获得错误文本显示使用Ajax.BeginForm什么时候?

Answer 1:

若要成功应用AJAX表单提交,你将不得不修改注册行为和意见。 默认情况下,在错误的情况下,这个动作只返回相关的register.aspx视图。 第一步将是把验证摘要部分用户控件内:

ValidationSummary.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.ValidationSummary("Account creation was unsuccessful. Please correct the errors and try again.") %>

然后,你包括Register.aspx鉴于这里面部分:

<div id="validationSummary">
    <% Html.RenderPartial("ValidationSummary"); %>
</div>

<% using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "validationSummary" })) { %>
    FORM CODE HERE
<% } %>

最后修改注册行为:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(string userName, string email, string password, string confirmPassword)
{
    // ... skipped content for clarity

    // If we got this far, something failed, redisplay form
    if (Request.IsAjaxRequest())
    {
        // If an ajax request was made return only the validation errors 
        // instead of the whole page
        return PartialView("ValidationSummary");
    }
    else
    {
        return View();
    }
}

如果登记在默认情况下注册的动作只是重定向到主页/索引成功。 你将不得不修改该位为好,因为当你正在执行一个Ajax请求重定向将不起作用。 用同样的方法,如果你异步调用的动作,你可以测试并返回一些文字,将指示注册成功。 本文将相同的内展示div为验证错误。


更新:

最后一个问题 - 而不是错误消息的符号列表,我怎么每个控件的错误消息旁边使用Html.ValidationMessage(“......”)方法控制渲染?

为了实现这一点,你需要把你的表单内容的局部视图中:

<% using (Ajax.BeginForm(
    "register", 
    null, 
    new AjaxOptions { 
        HttpMethod = "POST", 
        UpdateTargetId = "myForm" 
    }, 
    new { 
        id = "myForm" 
    })) { %>
     <% Html.RenderPartial("RegisterForm"); %>
<% } %>

而在你注册动作使正确的部分:

if (Request.IsAjaxRequest())
{
    return PartialView("RegisterForm");
}
else
{
    return View();
}


文章来源: Ajax.BeginForm - Displaying Validation Errors