我在我的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; }
}
答案 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);
}