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