如何处理不同视图中所需的其他模型属性

时间:2017-01-11 14:08:25

标签: .net asp.net-mvc model

假设我们有简单的模型:

public class Employee{
 public int Id {get;set;}
 public string Name {get;set;}
 public int ManagerId {get;set;}
 public int ProfileId {get;set;}
}

一切都很好,我可以添加和更新员工。如果我需要有关经理的信息,我可以单独请求经理数据。 现在,如果我需要显示一个包含数千名员工的表,并且我需要管理员名称,我无法为每位员工提出经理请求。我可以用Manager对象替换ManagerId,但在大多数情况下不需要它。我们可以为给定的表创建一个单独的模型,但如果您需要另一个与ProfileId相关的表中的其他较小的细节,我们为此创建另一个模型?我们将有许多类似的模型,它将是一团糟,我们需要方法来为每个模型请求数据。

有些人做的是,他们将ManagerName添加到此模型中,只是一个关心的小房产?然后你需要ProfileName,所以我们将其添加到。{1}}。然后我们需要在另一个表中显示另一个较小的细节,"没有用于创建另一个模型,只是为了这个,对#34; ? 问题是在最坏的情况下,我们最终得到的模型具有与其无直接关系的属性,并且您不知道哪个是什么。存储库中的不同方法只能获取其中一些附加属性的数据,这使得它更难理解。

在这种情况下,最佳做法是什么?关于如何处理这样的事情的信息不多。

1 个答案:

答案 0 :(得分:0)

恕我直言,最好的方法是应用ViewModel Pattern并为每个View创建一个ViewModel。我知道这听起来像乍看之下浪费时间,但你必须记住,通常不同的观点有不同的要求和领域。这种方法很适合在应用程序的用户界面和应用程序逻辑之间进行清晰的分离。

采用一致的名称约定是避免陷入混乱的模糊视图模型的好方法。

查看this article以获取有关模式的更多详细信息(作者提到了WPF和Silverlight,但原理与MVC相同)。