c# - ASP.NET MVC 模型与动态 View 模型绑定(bind)

标签 c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

处理绑定(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/

相关文章:

asp.net - 为什么我的 ASP.NET 单点登录停止工作?

asp.net-mvc - 遥测初始化程序失败 : Could not load "Microsoft.AspNet.TelemetryCorrelation"

c# - 数据源上的 Kendo TreeView 同步方法不起作用

c# - MySqlConnection ADO.Net CPU 使用率高

c# - .NET 4.0 是否与 Windows XP SP2 或更低版本兼容?

C# 语法 : Placing the interface's name in the implementation's declaration

c# - 将两种扩展方法合二为一

asp.net - 什么是最好的 - 数据集或数据阅读器?

c# - 如何比较 DateTime.Now 与 MySQL DATETIME 格式?

asp.net-mvc - ASP.NET MVC V2 - 伙伴类