我正在创建一个简单的MVC3应用程序,其中我使用editorfor模板来显示包含两个字段的简单表单,这些属性具有“Required”属性的模型级验证。 但是,当我单击窗体上的提交按钮并检查控制器操作中的ModelState时,它将显示为无效,但错误消息未显示在窗体中。
我正在粘贴以下代码:
1)模特:
public class EmployeeList
{
public List<Employee> ListOfEmployees { get; set; }
}
public class Employee
{
[Required(ErrorMessage="{0} is required.")]
public int? Id { get; set; }
[Required(ErrorMessage="{0} is required.")]
public string Name { get; set; }
}
2)控制器动作:
[HttpPost]
public ActionResult AddEmployee(EmployeeList ListOfEmployees1)
{
if (ModelState.IsValid)
{
service.AddEmployee(ListOfEmployees1);
return RedirectToAction("ListofEmployees");
}
return View();
}
3)主视图(AddEmployee.cshtml):
@using (Html.BeginForm("AddEmployee", "Home", FormMethod.Post, new { @id = "testForm" }))
{
@Html.EditorFor(x => x.ListOfEmployees)
<p>
<input type="submit" value="Add" />
</p>
}
EditorFor模板视图(Employee.cshtml):
@model test.Models.Employee
<table border="0">
<tr>
<td>@Html.LabelFor(model => model.Id)</td>
<td>@Html.TextBoxFor(model => model.Id)
@Html.ValidationMessageFor(model => model.Id)
</td>
</tr>
<tr>
<td>@Html.LabelFor(model => model.Name)</td>
<td>@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</td>
</tr>
</table>
如果我使用部分视图而不是编辑模板来显示这两个字段,那么表单上的验证消息会出现,但编辑器模板不会发生相同的情况。 有人可以帮忙吗?
答案 0 :(得分:1)
在您的操作方法中,返回包含模型的视图
[HttpPost]
public ActionResult AddEmployee(EmployeeList ListOfEmployees1)
{
if (ModelState.IsValid)
{
....
}
return View(ListOfEmployees1);
}
答案 1 :(得分:0)
我认为它不起作用,因为你使用EditorFor作为集合类型的模型。而是尝试类似的事情:
@for(var i=0; i< Model.ListOfEmployees.Count; i++){
Html.EditorFor(m => m.ListOfEmployees[i])
}