我试图让 UpdateModel 填充在编译时仅设置为接口的模型。例如,我有:
// View Model
public class AccountViewModel {
public string Email { get; set; }
public IProfile Profile { get; set; }
}
// Interface
public interface IProfile {
// Empty
}
// Actual profile instance used
public class StandardProfile : IProfile {
public string FavoriteFood { get; set; }
public string FavoriteMusic { get; set; }
}
// Controller action
public ActionResult AddAccount(AccountViewModel viewModel) {
// viewModel is populated already
UpdateModel(viewModel.Profile, "Profile"); // This isn't working.
}
// Form
<form ... >
<input name='Email' />
<input name='Profile.FavoriteFood' />
<input name='Profile.FavoriteMusic' />
<button type='submit'></button>
</form>
另请注意,我有一个继承自 DefaultModelBinder 的自定义模型绑定器,该绑定器使用覆盖的 CreateModel 方法中的 StandardProfile 实例填充 IProfile。
问题是FavoriteFood 和FavoriteMusic 永远不会被填充。有任何想法吗?理想情况下,这一切都将在模型绑定器中完成,但我不确定如果不编写完全自定义的实现是否可行。
谢谢,布赖恩