Mat*_*hew 1 .net c# asp.net asp.net-mvc asp.net-mvc-5
我有两个型号:
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; }
}
Run Code Online (Sandbox Code Playgroud)
表格中有两个字段,第一个字段是Name,第二个字段是下拉列表Titles(Mr.,Mrs. Miss.等)
此页面的视图是强类型的DetailViewModel,并且Save控制器中的方法接受类型的参数PersonViewModel.
由于视图强类型化为与表单操作的参数类型不同的类型,因此HttpRequest中的名称与MVC在操作中期望的名称不匹配.
是否可以让MVC正确绑定模型不匹配而无需手动指定表单字段名称?(例如,我仍然想使用@Html.TextBoxFor(m => m.Person.Name))
为了澄清,提交的表单字段名称类似于以下内容:
Person.Name =马修&Person.Title =先生.
我需要以下内容(用于模型绑定工作):
名称=马修&标题=先生.
小智 5
您可以使用action方法中的Prefix属性BindAttribute
public ActionResult Edit([Bind(Prefix="Person")]PersonViewModel model)
{
}
Run Code Online (Sandbox Code Playgroud)
这实际上Person在绑定时从属性名称中去除了前缀
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |