如何使用TextBoxFor将项添加到“模型中的List <entitytype>”,以促进不引人注意的客户端验证MVC3?</entitytype>

时间:2011-12-20 08:14:04

标签: asp.net-mvc-3 c#-4.0 unobtrusive-validation

我在我的viewmodel中使用List,我希望在视图上使用Razor视图(使用MVC3上的Razor视图),使用模型进行不显眼的客户端验证。

我正在尝试从带有验证的表单中收集新的人员信息,然后将其添加到视图模型中的列表中。但是使用TextBoxFor我没有选择,而是使用集合中的特定项目,而不是它必须如何工作。

感谢任何帮助。

提前致谢。

public class Person
{
        [Required(ErrorMessage="First name is a Required Field")]        
        public string FirstName
        { get; set; }

        [Required(ErrorMessage = "Last name is a Required Field")]
        public string LastName { get; set; }

        [Required(ErrorMessage = "Primary E-Mail is a Required Field")]
        public string PrimaryEmail { get; set; }

        public string PrimaryPhoneNumber { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我通过向我的ViewModel添加一个属性来完成此操作,该属性公开了一个新的人员实例。

public class PeopleModel
{
    public IEnumerable<Person> People { get; set; }
    public Person NewPerson { get; set; }
}

您甚至不必为其分配值,属性的存在就足够了。

public ActionResult Index()
{
    var data = new PeopleModel {People = getPeople()};
    return View(data);
}

然后在你看来:

@using(Html.BeginForm("MakeNew", "People", FormMethod.Post))
{
    @Html.LabelFor(m => m.NewPerson.FirstName)
    @Html.TextBoxFor(m => m.NewPerson.FirstName)
}

最后在接收新数据的行动中:

public ActionResult MakeNew(Person newPerson)
{
    return Content(newPerson.FirstName);
}