我想知道是否有办法绑定传递到控制器的具有与类属性不同的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();
}

08-04 23:13