5

我有以下项目设置

项目A(主要)

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

项目 N

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

我如何从项目 A 调用项目 N 中的视图并从 N 调用回 A。基本上我要做的是将每个项目 N 打包为拥有自己的单独 MVC,因为它来自不同的来源并将其插入主项目,然后让它导航到正确的视图。

这可以做到吗?还是有更好的方法来做到这一点?

4

2 回答 2

3

您可以编写自定义虚拟路径提供程序。这是一篇不错的博客文章,其中显示了此类虚拟路径提供程序的示例,允许您将 Razor 视图作为资源嵌入到程序集中并在多个应用程序中重用它们。

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

于 2012-06-22T21:24:29.890 回答
0

如果可能的话,我确实建议另一种方法。如果我理解正确,这些项目在某种程度上是 ike 插件,但它们不是独立的应用程序。而且它们现在相互关联,因此它们是耦合的。这很棘手,但我只会使用 1 个 asp.net mvc 项目(web ui)。属于其他项目的所有 UI 位我都会让它们成为助手(几乎是小部件)。这意味着,每个项目只包含将用于构造视图的助手。

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

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

于 2012-06-24T13:27:40.583 回答