Чтобы успешно применить форму представления ajax, вам необходимо будет изменить действие Register и представления. По умолчанию в случае ошибки это действие просто возвращает связанное представление 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();
}
}
В случае регистрации stration успешно по умолчанию действие Register просто перенаправляет на Home/Index. Вам также придется изменить этот бит, потому что, выполняя запрос ajax, перенаправление не будет работать. Точно так же вы можете проверить, если вы вызываете действие асинхронно и возвращаете некоторый текст, который указывает, что регистрация прошла успешно. Этот текст будет отображаться внутри того же div
как ошибки проверки.
UPDATE:
Один последний вопрос - вместо списка пулевой сообщений об ошибках, как я получаю каждое сообщение управления ошибкой визуализации рядом с элементом управления с помощью 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();
}