C# 在ASP.NET MVC 5中构建外部模型

C# 在ASP.NET MVC 5中构建外部模型,c#,visual-studio-2013,asp.net-mvc-5,asp.net-mvc-scaffolding,C#,Visual Studio 2013,Asp.net Mvc 5,Asp.net Mvc Scaffolding,我在外部程序集中有一个简单的域模型。该模型使用DTO与几个服务类进行通信。它不使用实体框架 在Visual Studio 2012中,我可以在“添加视图”对话框中选择DTO,并为它们构建强类型视图 但是,DTO不会显示在Visual Studio 2013的“添加视图”对话框中 我手动创建的强类型视图工作正常,所以问题不是Razor/MVC无法查看或使用我的DTO。问题在于脚手架 任何帮助都将不胜感激 因此您的DTO位于项目名称空间或.Models名称空间之外的某个位置。下拉列表与从那里拉强

我在外部程序集中有一个简单的域模型。该模型使用DTO与几个服务类进行通信。它不使用实体框架

在Visual Studio 2012中,我可以在“添加视图”对话框中选择DTO,并为它们构建强类型视图

但是,DTO不会显示在Visual Studio 2013的“添加视图”对话框中

我手动创建的强类型视图工作正常,所以问题不是Razor/MVC无法查看或使用我的DTO。问题在于脚手架


任何帮助都将不胜感激

因此您的DTO位于项目名称空间或.Models名称空间之外的某个位置。下拉列表与从那里拉强类型视图的类密切相关。我知道您的DTO可能存在于另一个程序集中,您的攻击是什么,但是有没有办法将它们重新编译到另一个程序集中的MvcDemo.Models命名空间中,并在MVC项目的Models命名空间中声明一个分部类?这可能不是理想的答案,如果你不喜欢这个主意,我很乐意删除我的答案。

我想出了一个办法。我在Models文件夹中创建了一个与DTO具有相同属性的类,然后从中创建了视图。然后我进入每个视图并将模型更改回我的DTO。当我拥有所有需要的视图时,我删除了Models文件夹中的类。仍然在寻找真正的解决方案。@Cory这是重复的吗?看看。建议的解决方法是使用项目引用。@Jeremythonpson:不完全是;我有“添加控制器”和“添加视图”菜单选项,但出现的对话框似乎只在“模型类”下拉列表中列出解决方案中的类,而不是外部部件引用。我意识到这可能是为了避免列表的长度超过一百万个类,但似乎对话框应该允许您输入完全限定的类名(您可以输入,但“确定”按钮仍处于禁用状态),并仍然对其进行支架。部分类不能跨程序集,即使它们共享相同的命名空间,所以不幸的是,我认为这行不通。