【发布时间】:2015-01-20 03:23:18
【问题描述】:
我有两个模型:
public class PersonViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}
public class DetailViewModel
{
public IEnumerable<string> Titles { get; set; }
public PersonViewModel Person { get; set; }
}
表单显示有两个字段,第一个字段是Name,第二个字段是Titles(先生、小姐等)的下拉列表
此页面的视图被强类型化为DetailViewModel,并且控制器中的Save 方法接受PersonViewModel 类型的参数。
由于视图被强类型化为与表单操作的参数类型不同的类型,因此 HttpRequest 中的名称与 MVC 期望的操作不匹配。
是否可以让 MVC 与模型不匹配正确绑定而无需手动指定表单字段名称? (例如,我仍然想使用@Html.TextBoxFor(m => m.Person.Name))
为了澄清,正在提交的表单字段名称类似于以下内容:
Person.Name=Matthew&Person.Title=先生
我需要以下内容(模型绑定才能工作):
姓名=马修&职务=先生
【问题讨论】:
-
你的保存方法不能接受
DetailViewModel吗? -
我可以,但是当我必须进行验证时,事情开始变得一团糟。实际发布的数据是
Person内的所有内容,仅此而已。
标签: c# asp.net .net asp.net-mvc asp.net-mvc-5