使用VS2008中的MVC项目模板(开箱即用)我注意到以下几点:
下面是如何指定的Register.aspx形式。
<% using (Html.BeginForm()) { %>
选择注册按钮,而不提供任何帐户信息显示这一点。 帐户创建不成功。 请更正错误,然后再试一次。
•您必须指定一个用户名。
•您必须指定一个电子邮件地址。
•您必须指定的6个或更多字符的密码。
我改变了Register.aspx形式这一点。
<% using (Ajax.BeginForm("Register", new AjaxOptions { HttpMethod = "Post" })) { %>
选择注册按钮而不提供的帐户信息未显示任何错误。
问:我如何获得错误文本显示使用Ajax.BeginForm什么时候?
若要成功应用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();
}