asp.net-mvc-2 - ASP.NET MVC 2 : Any way to pass two Objects to a Template?

标签 asp.net-mvc-2 lookup-tables domain-model

此示例中的“查找”是 IList<string>状态缩写。通常,您的域模型 POCO 不会包含这些选项。 ViewModel 通常承担引用原始域模型和 Lookup 对象的责任,但是当域模型嵌套并且您使用 MVC 模板(无法访问原始模型的根属性?)时会发生什么?

有没有一种方法可以将查找包含在一个对象中,将模型包含在模板的不同对象中?是否允许在 View 中即时组装特定于该模板的 ViewModel(必须包含其中的任何嵌套数据)?我认为下拉查找值的静态方法不好。

有什么想法吗?

注释(据我所知):

来自存储库的域模型 POCO 的结构不会改变。例如,如果您需要一个模型同时具有客户对象和美国各州的 DDL 选项,那么您通常有一个引用客户对象和客户查找列表的 ViewModel。

但是,当您有嵌套的域模型(聚合根)时,嵌套对象没有地方放置查找列表,并且 MVC 模板无法访问根级别 View 模型(它们的 View 模型是部分模型)。

编辑:

是否有某种方法可以将 DDL 列表放在 ViewModel 的根级别中,然后当您到达 Customer 对象时,构造一个引用根级别 DDL 列表和当前 Customer 对象以发送到模板的新 ViewModel ?这将消除模型中的重复数据,并为所有 View 使用单个模型。唯一的缺点是您认为 Controller 类似数据汇编代码(这同样糟糕)。

最佳答案

一些建议。首先,为您的 View 使用单独的 View 模型——不要直接使用您的域模型。这些 View 模型可以而且应该携带 View 所需的额外数据。其次,您可以使用 DisplayFor 上的重载/EditorFor将附加 View 数据传递给模板。这样您的模板就可以特定于特定的域模型,但仍可以访问 View 模型中的附加数据。

关于asp.net-mvc-2 - ASP.NET MVC 2 : Any way to pass two Objects to a Template?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559872/

相关文章:

c++ - 使用字符串类型的键存储散列值的最佳结构

asp.net - MVC Web.Debug.Config 有关 Debug模式的问题

asp.net-mvc - 使用 NLog 记录未处理的异常? ELMAH 和 NLog 应该一起使用吗?

r - 使用xts作为查找表

domain-driven-design - 我们如何在 DDD 中对不同类型用户的行为进行建模?

sql-server - 这种情况下最好的数据库结构是什么?

domain-driven-design - 领域模型保存

c# - 根据Profile获取所有用户

c# - 动态页面上的 ASP.NET MVC 2 验证

optimization - 表访问 vs 函数调用 + 条件判断 : which is faster?