未通过编辑器模板显示的表单中的验证消息

时间:2014-08-28 15:15:31

标签: c# asp.net-mvc-3

我正在创建一个简单的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>

如果我使用部分视图而不是编辑模板来显示这两个字段,那么表单上的验证消息会出现,但编辑器模板不会发生相同的情况。 有人可以帮忙吗?

2 个答案:

答案 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])
}