处理绑定(bind)复杂 View 模型的推荐方法是什么?例如,使用以下对象:
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 传递给编辑 View 以允许用户编辑所有字段。
我已经成功地使用 EditorTemplates 来显示存储在“PreferredSportsTeam”属性中的对象的相应 View 。但是,当提交编辑表单时,MVC 模型绑定(bind)器无法重建存储在 PreferredSportsTeam 中的任何对象。它确实正确填充了 FirstName 和 LastName 属性,但 PreferredSportsTeam 属性始终作为我无法转换为其他任何对象的通用对象返回。
我是否遗漏了什么,或者默认的 MVC 模型 Binder 根本不可能实现?我知道自定义模型绑定(bind)器并认为它们可能是一种解决方案,但我对它们的了解还不足以理解如何使用它们来解决问题。
最佳答案
下面的代码示例展示了如何使用动态对象:
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以获得更详细的解释。
关于c# - ASP.NET MVC 模型与动态 View 模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23621587/