【发布时间】:2023-03-06 11:45:01
【问题描述】:
处理绑定复杂视图模型的推荐方法是什么?例如,使用以下对象:
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 模型绑定器根本不可能?我知道自定义模型绑定器并认为它们可能是一种解决方案,但我对它们的了解不足,无法理解如何使用它们来解决问题。
【问题讨论】:
-
我只能想到使用自定义模型绑定器。看看这篇文章以获得一些想法:matthidinger.com/archive/2011/08/16/…
-
我会说这是基于任务的 UI 的完美候选者。而不是完整的“一个 POST 来统治所有”CRUD 方法。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5