Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC AJAX和HTML.ValidationMessageFor_Asp.net Mvc_Ajax_Asp.net Mvc 2_Asp.net Ajax_Jquery - Fatal编程技术网

Asp.net mvc ASP.NET MVC AJAX和HTML.ValidationMessageFor

Asp.net mvc ASP.NET MVC AJAX和HTML.ValidationMessageFor,asp.net-mvc,ajax,asp.net-mvc-2,asp.net-ajax,jquery,Asp.net Mvc,Ajax,Asp.net Mvc 2,Asp.net Ajax,Jquery,我已经习惯了ASP.NET Webforms使用UpdatePanel轻松实现AJAX的方法。我知道MVC的过程更加手工化 在一个特定的例子中,我使用数据注释来验证一些表单输入。我使用HTML.ValidationMessageFor helper来显示错误消息。如果我想使用AJAX发布此表单并显示此错误消息,那么过程是什么?是否可以保留HTML.ValidationMessageFor并使其与AJAX一起工作 谢谢。本文可能会有所帮助: MVC中使用的验证可以是客户端和服务器端。要启用客户端

我已经习惯了ASP.NET Webforms使用UpdatePanel轻松实现AJAX的方法。我知道MVC的过程更加手工化

在一个特定的例子中,我使用数据注释来验证一些表单输入。我使用HTML.ValidationMessageFor helper来显示错误消息。如果我想使用AJAX发布此表单并显示此错误消息,那么过程是什么?是否可以保留HTML.ValidationMessageFor并使其与AJAX一起工作


谢谢。

本文可能会有所帮助:

MVC中使用的验证可以是客户端和服务器端。要启用客户端验证,请使用:

 <% Html.EnableClientValidation(); %>


在你看来的某个地方。这就不需要使用AJAX将表单发布到服务器,然后以内联方式显示结果,因为启用javascript的用户将拥有自己的客户端验证。

您是否使用内置AJAX方法?例如,您是否使用
AJAX.BeginForm(…)
创建AJAX表单?如果是这样,则很容易显示验证消息

还有一件事:是要为每个不正确的控件显示验证消息,还是只想在表单上方显示验证摘要?我很确定您要求为每个控件显示一条单独的消息,但为了以防万一,我将包括这两条消息


要为每个不正确的控件显示单独的消息,请执行以下操作: 首先,您需要将表单输入放在局部视图中。我将其称为部分视图
RegisterForm.ascx

接下来,您的视图中应该有这样的内容

<% using (Ajax.BeginForm("MyAction", null, 
    new AjaxOptions { 
        HttpMethod = "POST", 
        UpdateTargetId = "myForm" 
    }, 
    new { 
        id = "myForm" 
    })) { %>

     <% Html.RenderPartial("RegisterForm"); %>

<% } %>

要仅在表单上方显示验证摘要,请执行以下操作: 您应该首先创建一个单独的验证摘要部分视图。下面是
ValidationSummary.ascx
的代码:

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

希望有帮助

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.ValidationSummary("Form submission was unsuccessful. Please correct the errors and try again.") %>
<div id="validationSummary">
    <% Html.RenderPartial("ValidationSummary"); %>
</div>

<% using (Ajax.BeginForm("MyAction", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "validationSummary" })) { %>
    <!-- code for form inputs goes here -->
<% } %>
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MyAction(CustomViewModel m)
{
    if(!m.IsValid) //data validation failed
    {
        if (Request.IsAjaxRequest()) //was this request an AJAX request?
        {
            return PartialView("ValidationSummary"); //if it was AJAX, we only return the validation errors.
        }
        else
        {
            return View();
        }
    }
}