处理绑定复杂视图模型的推荐方法是什么?例如,使用以下对象:
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的实例放入" PreferredSportsTeam" PersonViewModel的属性,然后将PersonViewModel传递给编辑视图,以允许用户编辑所有字段。
我已成功使用EditorTemplates显示存储在" PreferredSportsTeam"中的对象的相应视图。属性。但是,在提交编辑表单时,MVC模型绑定程序无法重建存储在PreferredSportsTeam中的任何对象。它确实正确填充了FirstName和LastName属性,但PreferredSportsTeam属性始终作为一个通用对象返回,我无法将其转换为其他任何内容。
是否存在我缺少的内容,或者使用默认的MVC模型绑定器是不可能的?我知道自定义模型绑定器并认为它们可能是一个解决方案,但我对它们的了解不足以了解它们如何用于解决问题。
答案 0 :(得分:2)
下面的代码示例显示了如何使用动态对象:
var team = new Team();
team.FirstName = "FirstName";
team.LastName = "LastName";
var baseballTeam = new BaseBallTeam();
baseballTeam.TotalSaves = 100;
team.PreferredSportsTeam = new ExpandoObject();
team.PreferredSportsTeam.BaseBallTeam = baseballTeam;
有关详细说明,请参阅This。