在MVC3中,“添加视图”对话框在哪里获取其模型类?

时间:2012-07-22 13:18:46

标签: c# asp.net .net asp.net-mvc-3

偶然发现了我研究过的一个好奇心,却没有找到确切的答案。我正在为我的mvc项目添加一个视图,当我注意到当提到视图的模型时,很多类似乎都没有直接参考。例如,我可以在添加视图对话框中看到excel的所有ClosedXml类,但是在我的Bussines Logic项目中引用了该dll,而不是在Web项目中。那么1.为什么它出现在添加视图对话框的模型下拉列表中呢? 2.这个列表不应只包含models文件夹中的类吗?对不起,如果这是一个愚蠢的问题,但没有人能给我一个直接的答案。

2 个答案:

答案 0 :(得分:5)

属于当前解决方案的所有公共类都显示在此列表中,而不仅仅是在当前程序集的Model文件夹中声明的那些类。即使是引用程序集中的类也会出现。有些课程将被过滤掉:

  • Controller结尾的类型(以避免在列表中看到您的控制器)
  • SystemMicrosoft命名空间
  • 中声明的类型

答案 1 :(得分:1)

除了@DarinDimitrov的答案

  

例如,我可以在添加视图对话框中看到excel的所有ClosedXml类,但是我的Bussines Logic项目中引用了该dll

Visual Studio似乎遍历了所有引用,因此我假设您在MVC项目中有对业务组件的引用

现在原因是什么?这是因为你几乎可以使用任何public实体作为你的模型

  

2.这个列表不应只包含models文件夹中的类吗?

MVC中的模型是代表您的视图的简单类,请不要对您当前的域模型感到困惑。他们使用相同的术语,但MVC中的模型只是一个简单的类,代表你的观点而没有更多

考虑到这一点,您可以使用任何公共类作为模型。

我认为这是背后的原因,虽然我很少在Visual Studio中使用该选项,因为通常显示列表内容需要太多时间,所以我更喜欢手动设置模型