在ASP.NET MVC 5中搭建外部模型

11

我有一个简单的领域模型在外部程序集中。该模型使用DTO与几个服务类进行通信,但没有使用Entity Framework。

在Visual Studio 2012中,我可以在"添加视图"对话框中选择我的DTO,并为它们生成强类型视图。

Visual Studio 2012 scaffolding

然而,在Visual Studio 2013中,DTOs并未显示在"添加视图"对话框中。

Visual Studio 2013 scaffolding

我手动创建的强类型视图可以正常工作,因此问题不是Razor/MVC无法看到或使用我的DTOs,问题只出现在脚手架中。

如果有任何帮助,将不胜感激。


我想到了一个办法。我在Models文件夹中创建了一个类,该类具有与我的DTO相同的属性,然后从中创建了Views。然后我进入每个视图并将模型更改回我的DTO。当我拥有所需的所有视图时,我删除了Models文件夹中的类。仍在寻找真正的解决方案。 - Rob Windsor
@Cory 这是一个重复的问题吗?https://dev59.com/RHrZa4cB1Zd3GeqPxw4Q#20480300? - Jeremy Thompson
@JeremyThompson:不完全正确;我有“添加控制器”和“添加视图”菜单选项,但弹出的对话框似乎只列出了来自模型类下拉列表中解决方案的类,而不是外部程序集引用。我意识到这可能是为了防止列表变得过长,但似乎该对话框应该允许您输入完全限定的类名(您可以这样做,但“确定”按钮仍然无法使用)并进行脚手架搭建。 - Cᴏʀʏ
1个回答

0

因此,您的DTO存在于项目命名空间或.Models命名空间之外的某个位置。下拉菜单会倾向于从那里提取用于强类型视图的类。我意识到您的DTO可能存储在另一个程序集中,而您的解决方法是什么,但是否有一种方法将它们重新编译到其他程序集中的MvcDemo.Models命名空间中,并在MVC项目中的models命名空间中声明部分类?这可能不是理想的答案,如果您不喜欢这个想法,我很乐意删除我的答案。


部分类不能跨越程序集,即使它们共享相同的命名空间,所以不幸的是我认为这不会起作用。 - Cᴏʀʏ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接