C# 在MVC3中,“添加视图”对话框从何处获取其模型类?

C# 在MVC3中,“添加视图”对话框从何处获取其模型类?,c#,asp.net,.net,asp.net-mvc-3,C#,Asp.net,.net,Asp.net Mvc 3,我偶然发现了一个好奇心,但没有找到确切的答案。当我在mvc项目中添加视图时,我注意到当提到视图的模型时,很多类似乎没有直接的引用。例如,我可以在“添加视图”对话框中看到所有用于excel的ClosedXml类,但该dll在我的业务逻辑项目中引用,而不是在web项目中。所以1。为什么它会出现在“添加视图”对话框的“模型”下拉列表中?2.此列表是否仅由models文件夹中的类组成?如果这是一个愚蠢的问题,很抱歉,但是没有人能给我一个直接的答案。作为当前解决方案一部分的所有公共类都会显示在此列表中,而

我偶然发现了一个好奇心,但没有找到确切的答案。当我在mvc项目中添加视图时,我注意到当提到视图的模型时,很多类似乎没有直接的引用。例如,我可以在“添加视图”对话框中看到所有用于excel的ClosedXml类,但该dll在我的业务逻辑项目中引用,而不是在web项目中。所以1。为什么它会出现在“添加视图”对话框的“模型”下拉列表中?2.此列表是否仅由models文件夹中的类组成?如果这是一个愚蠢的问题,很抱歉,但是没有人能给我一个直接的答案。

作为当前解决方案一部分的所有公共类都会显示在此列表中,而不仅仅是那些在当前程序集中的模型文件夹中声明的类。甚至引用程序集中的类也会出现。但某些类将被过滤掉:

以Controller结尾的类型,以避免在列表中看到您的控制器 在系统或Microsoft命名空间中声明的类型
作为当前解决方案一部分的所有公共类都显示在此列表中,而不仅仅是在当前程序集中的模型文件夹中声明的公共类。甚至引用程序集中的类也会出现。但某些类将被过滤掉:

以Controller结尾的类型,以避免在列表中看到您的控制器 在系统或Microsoft命名空间中声明的类型
除了DarinDimitrov的回答之外

例如,我可以在“添加视图”对话框中看到所有用于excel的ClosedXml类,但该dll在我的业务逻辑项目中被引用

VisualStudio似乎迭代了所有引用,所以我假设您在MVC项目中确实有对业务组件的引用

原因是,因为你实际上可以使用任何公共实体作为你的模型

2.此列表是否仅由models文件夹中的类组成

没有

MVC中的模型是表示您的视图的简单类,请不要对您当前的域模型感到困惑。他们使用了相同的术语,但MVC中的模型就是这样,一个简单的类来表示您的视图,仅此而已

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


我认为这就是背后的原因,尽管我很少在VisualStudio中使用该选项,因为通常显示列表内容需要花费太多时间,所以除了@DarinDimitrov的答案外,我更喜欢手动设置模型

例如,我可以在“添加视图”对话框中看到所有用于excel的ClosedXml类,但该dll在我的业务逻辑项目中被引用

VisualStudio似乎迭代了所有引用,所以我假设您在MVC项目中确实有对业务组件的引用

原因是,因为你实际上可以使用任何公共实体作为你的模型

2.此列表是否仅由models文件夹中的类组成

没有

MVC中的模型是表示您的视图的简单类,请不要对您当前的域模型感到困惑。他们使用了相同的术语,但MVC中的模型就是这样,一个简单的类来表示您的视图,仅此而已

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


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

谢谢,文档理论上对这个问题是零。谢谢,文档理论上对这个问题是零。