什么是处理绑定复杂视图模型的推荐方法?例如,使用以下对象:
```HTML
我想将BaseballTeamViewModel或HockeyTeamViewModel的实例放入PersonViewModel的“PreferredSportsTeam”属性中,然后将该PersonViewModel传递给编辑视图,以允许用户编辑所有字段。我已成功使用EditorTemplates来显示存储在“PreferredSportsTeam”属性中对象的相应视图。然而,当提交编辑表单时,MVC模型绑定器无法重构存储在PreferredSportsTeam中的任何对象。它正确地填充了FirstName和LastName属性,但是PreferredSportsTeam属性始终返回一个无法转换为其他任何类型的通用对象。是否有什么遗漏的东西,或者默认的MVC模型绑定器根本不可能呢?我知道自定义模型绑定器,并认为它们可能是一种解决方法,但我对它们的了解还不足以理解如何使用它们来解决问题。
```HTML
class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
//I have also tried a generic object instead of dynamic with the same results
public dynamic PreferredSportsTeam { get; set; }
}
class SportsTeamViewModel
{
public string Name { get; set; }
public string City { get; set; }
}
class BaseballTeamViewModel : SportsTeamViewModel
{
public double TeamERA { get; set; }
}
class HockeyTeamViewModel : SportsTeamViewModel
{
public int TotalSaves { get; set; }
}
我想将BaseballTeamViewModel或HockeyTeamViewModel的实例放入PersonViewModel的“PreferredSportsTeam”属性中,然后将该PersonViewModel传递给编辑视图,以允许用户编辑所有字段。我已成功使用EditorTemplates来显示存储在“PreferredSportsTeam”属性中对象的相应视图。然而,当提交编辑表单时,MVC模型绑定器无法重构存储在PreferredSportsTeam中的任何对象。它正确地填充了FirstName和LastName属性,但是PreferredSportsTeam属性始终返回一个无法转换为其他任何类型的通用对象。是否有什么遗漏的东西,或者默认的MVC模型绑定器根本不可能呢?我知道自定义模型绑定器,并认为它们可能是一种解决方法,但我对它们的了解还不足以理解如何使用它们来解决问题。