Я пытаюсь проверить форму в MVC.
Я добавляю собственные ошибки в состояние модели и получаю их как недействительные при отправке формы. Когда отображается представление, оно не показывает ни сообщения проверки, ни сводку проверки. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно, или укажите мне правильное направление, если есть какой-либо другой способ проверки?
Редактировать Это ASP.NET MVC 1. Вот код:
Ниже следует сущность
namespace DCS.DAL.Entities
{
public class Group : IDataErrorInfo
{
public int GroupId { get; set; }
public string GroupName { get ; set; }
public string AboutText { get; set; }
public string LogoURL { get; set; }
public string FriendlyURL { get; set; }
public bool ExcludeFromFT { get; set; }
public ContactInfo ContactInfo { get; set; }
public string Error { get { return string.Empty; } }
public string this[string propName]
{
get
{
if ((propName == "GroupName") && string.IsNullOrEmpty(GroupName))
return "Please enter Group Name";
return null;
}
}
}
}
Ниже приводится представление
<%= Html.ValidationSummary("Please correct following details") %>
<% using (Html.BeginForm()) {%>
<div id="divError" Style="display:none;">
errors
<%
foreach (KeyValuePair<string, ModelState> keyValuePair in ViewData.ModelState)
{
foreach (ModelError modelError in keyValuePair.Value.Errors)
{
%>
<% Response.Write(modelError.ErrorMessage); %>
<%
}
}
%>
</div>
<fieldset>
<table>
<tr>
<td>
<label for="GroupName">Group Name:</label>
</td>
<td>
<%= Html.TextBox("GroupName", Model.GroupName) %>
<%= Html.ValidationMessage("GroupName","group") %>
</td>
Цикл Foreach предназначен для тестирования, он попадает в цикл for, но не отправляет сообщение об ошибке response.write, ни сводку проверки, ни сообщение проверки.
Следующий контроллер
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditGroup(Group group, FormCollection collection)
{
//Group group = new Group();
bool success = false;
try
{
var contactInfo = new ContactInfo
{
ContactName = collection["ContactName"],
Email = collection["Email"],
Fax = collection["Fax"],
HeadOfficeAddress = collection["HeadOfficeAddress"],
Freephone = collection["Freephone"],
Telephone = collection["Telephone"],
Website = collection["Website"]
};
group.ContactInfo = contactInfo;
group.GroupName = collection["GroupName"];
if(string.IsNullOrEmpty(group.GroupName))
{
ModelState.AddModelError("GroupName", "Please enter group name");
}
if (!ModelState.IsValid)
{
success = groupRepository.InsertUpdateGroup(group);
return View(group);
}
}
catch
{
}
//return Json(success);
return View(group);
}
Он входит в цикл if(!Modelstate.isvalid)
, но не отображает ошибку.
Редактировать 2 Я вижу в текстовом визуализаторе, что в Сводке проверки есть сообщение об ошибке, хотя оно не будет отображаться на экране.
Спасибо