Используете ли вы встроенные методы AJAX? Например, вы создали форму AJAX с Ajax.BeginForm(...)
? Если это так, то очень легко показать сообщения проверки.
Еще одна вещь: вы хотите отображать сообщение проверки для каждого отдельного неверного элемента управления , или вы просто хотите, чтобы сводка проверки была выше вашей формы? Я уверен, что вы спрашиваете об отображении отдельного сообщения для каждого элемента управления, но я включу оба на всякий случай.
Чтобы отобразить отдельное сообщение для каждого неверного элемента управления:
Во-первых, вам нужно поместить входные данные формы в частичное представление . Я назову это Частичное представление RegisterForm.ascx
.
Далее, у вас должно быть что-то вроде на ваш взгляд :
<% using (Ajax.BeginForm("MyAction", null,
new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "myForm"
},
new {
id = "myForm"
})) { %>
<% Html.RenderPartial("RegisterForm"); %>
<% } %>
Наконец, ваше действие контроллера должно выглядеть примерно так:
[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();
}
}
}
Чтобы отобразить только резюме проверки над формой:
Сначала необходимо создать отдельное частичное представление ValidationSummary . Вот как должен выглядеть код ValidationSummary.ascx
:
<%@ 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();
}
}
}
Надеюсь, это поможет!