ASP.NET MVC 3结构 - 转到另一个项目中查看

时间:2012-06-22 21:21:37

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

我有以下项目设置

项目A(主要)

  1. 商业
  2. 数据
  3. 查看(asp.net mvc 3项目)
  4. 项目N

    1. 商业
    2. 数据
    3. 查看(asp.net mvc 3项目)
    4. 如何从项目A调用项目N中的视图和从N调用回A.本质上我要做的是将每个项目N打包为拥有自己的MVC,因为它来自不同的源并插入它进入主项目,然后让它导航到正确的视图。

      可以这样做吗?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以编写自定义virtual path provider。这是一个nice blog post,它显示了这样一个虚拟路径提供程序的示例,允许您将Razor视图作为资源嵌入到程序集中,并在多个应用程序中重用它们。

不幸的是,如果没有自定义虚拟路径提供程序,则无法在多个ASP.NET MVC应用程序之间交叉引用视图。默认提供程序不允许这样做,它只在当前应用程序中查找视图。

答案 1 :(得分:0)

如果可能的话,我会采取另一种方法。如果我理解正确,那些项目是以某种方式ike插件,但它们不是独立的应用程序。现在他们现在彼此关于所以他们是耦合。它是,让我说比较棘手,但我只使用1个asp.net mvc项目(web ui)。所有属于其他项目的UI位我都会帮助它们(很多小部件)。这意味着,每个项目仅包含将用于构造视图的帮助程序。

我认为这只是一个架构问题,如果你只想保留每个项目中的视图只是为了在不同的程序集中托管它们。按照小部件的方式看起来似乎很简单,但我认为你获得了最大的控制力和你想要的分离级别。唯一的事情是你没有定义完整的视图,但是为什么你想要在不同的地方有完整的视图(部分,布局),如果它们只在一个地方使用?!

现在,如果每个项目确实是一个插件,独立于其他插件,那么使用编译视图是最好的方法。但是如果项目B知道项目N的视图,那么我认为上述解决方案更合适。那个或整个应用程序过于设计。当它没有创建一个全新的丛林来进行导航时,分离是很好的。