我想知道是否有办法绑定传递到控制器的具有与类属性不同的ID的表单值。
该表单以Person作为参数发布到控制器,该参数具有Name属性,但实际的表单文本框的ID为PersonName而不是Name。
我该如何正确绑定呢?
最佳答案
不用理会,只需编写一个PersonViewModel
类即可反映与表单完全相同的结构。然后使用AutoMapper将其转换为Person
。
public class PersonViewModel
{
// Instead of using a static constructor
// a better place to configure mappings
// would be Application_Start in global.asax
static PersonViewModel()
{
Mapper.CreateMap<PersonViewModel, Person>()
.ForMember(
dest => dest.Name,
opt => opt.MapFrom(src => src.PersonName));
}
public string PersonName { get; set; }
}
public ActionResult Index(PersonViewModel personViewModel)
{
Person person = Mapper.Map<PersonViewModel, Person>(personViewModel);
// Do something ...
return View();
}