ASP.NET MVC 3 结构 - 转到另一个项目中的视图

5
我已经设置了以下项目:
主要项目A
1.业务 2.数据 3.视图(asp.net mvc 3项目)
项目N
1.业务 2.数据 3.视图(asp.net mvc 3项目)
我该如何从项目A调用项目N中的视图,以及从项目N返回到A?本质上,我正在尝试将每个项目N打包为其自己的MVC,因为它们来自不同的来源,并将其插入到主项目中,然后只需导航到正确的视图。
这可以做到吗?还是有更好的方法?
2个回答

3
你可以编写自定义的虚拟路径提供程序。这里有一篇不错的博客文章,展示了一个这样的虚拟路径提供程序的例子,允许你将Razor视图嵌入到程序集中作为资源,并在多个应用程序中重复使用它们。
不幸的是,如果没有自定义虚拟路径提供程序,你无法在多个ASP.NET MVC应用程序之间交叉引用视图。默认提供程序只会在当前应用程序内查找视图,这是不允许的。

谢谢Darin,我现在正在查看这些文章。第一印象是它看起来相当复杂,所以我会看看是否可行。 - fes
您还可以查看 Razor 生成器 http://razorgenerator.codeplex.com/,以便将视图编译为程序集的简单方法。 - MikeSW

0

如果可能的话,我建议采用另一种方法。如果我理解正确,这些项目有点像插件,但它们不是独立的应用程序。此外,它们现在互相了解,因此它们是耦合的。这有点棘手,但我会只使用一个asp.net mvc项目(Web UI)。所有属于其他项目的UI部分都将成为帮助程序(几乎是小部件)。这意味着,每个项目仅包含将用于构建视图的帮助程序。

如果您只想为了将其托管在不同的程序集中而保留每个项目中的视图,则我认为这是一个架构问题。采用小部件的方式可能看起来更费力,但我认为您可以获得最多的控制和所需的分离级别。唯一的问题是您没有完整的视图定义,但是如果它们将仅在一个地方使用,为什么要在不同的位置拥有完整的视图(局部视图、布局)?!

现在,如果每个项目确实是独立于其他插件的插件,则使用编译的视图是最佳方法。但是,如果B项目知道N项目的视图,则我认为上述解决方案更合适。或者整个应用程序过于工程化。当分离不会创建一个全新的难以导航的丛林时,分离是好的。


嗨,Mike,我认为你已经理解了我的想法。我猜这几乎就像我采取的Widget方法,虽然它有点更紧密,但我仍然可以更改数据源并只更新程序集而无需重新编译整个网站。 - fes

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