Joa*_*ujo 7 ajax asp.net-mvc jquery asp.net-ajax asp.net-mvc-2
我已经习惯了ASP.NET Webforms使用UpdatePanels进行AJAX的简单方法.我理解这个过程对MVC来说更具手工艺.
在特定情况下,我使用数据注释来验证某些表单输入.我使用HTML.ValidationMessageFor帮助程序来显示错误消息.如果我想使用AJAX发布此表单并显示此错误消息,那么该过程会是什么?是否可以保留HTML.ValidationMessageFor并使其与AJAX一起使用?
谢谢.
您使用的是内置的AJAX方法吗?例如,您是否使用Ajax.BeginForm(...)?创建了AJAX表单?如果是这样,显示验证消息非常容易.
还有一件事:您是否希望为每个不正确的控件显示验证消息,或者您只是想在表单上方显示验证摘要?我很确定你会询问是否为每个控件显示一条单独的消息,但我将包括两者以防万一.
首先,您需要将表单输入放在部分视图中.我将其称为部分视图RegisterForm.ascx.
接下来,您应该在视图中看到类似的内容:
<% using (Ajax.BeginForm("MyAction", null,
new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "myForm"
},
new {
id = "myForm"
})) { %>
<% Html.RenderPartial("RegisterForm"); %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
最后,您的Controller Action应如下所示:
[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("RegisterForm"); //if it was AJAX, we only return RegisterForm.ascx.
}
else
{
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您应该首先创建一个单独的ValidationSummary Partial View.这是代码ValidationSummary.ascx应该是什么样子:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.ValidationSummary("Form submission was unsuccessful. Please correct the errors and try again.") %>
Run Code Online (Sandbox Code Playgroud)
接下来,在您的视图中,您应该具有以下内容:
<div id="validationSummary">
<% Html.RenderPartial("ValidationSummary"); %>
</div>
<% using (Ajax.BeginForm("MyAction", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "validationSummary" })) { %>
<!-- code for form inputs goes here -->
<% } %>
Run Code Online (Sandbox Code Playgroud)
最后,您的Controller Action应该类似于:
[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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
本文可能会有所帮助: ScottGu 的博客:ASP.NET MVC 2:模型验证。
MVC 中使用的验证可以是客户端和服务器端。要启用客户端验证,请使用:
<% Html.EnableClientValidation(); %>
Run Code Online (Sandbox Code Playgroud)
在您看来的某处声明。这样就不需要使用 AJAX 将表单发布到服务器,然后内联显示结果,因为启用了 javascript 的用户将拥有自己的客户端验证。
| 归档时间: |
|
| 查看次数: |
10061 次 |
| 最近记录: |