我正在制作几个Web应用程序。我想在这里做的是:


应用程序应使用不同的应用程序池在IIS中独立存在。
有一个主要应用程序单独用作首页,允许登录/注销并将用户导航到其他应用程序。
我希望其他应用程序使用主应用程序的布局。


我当时想的结构是将主应用程序部署在网站的根文件夹下,并将其他应用程序托管在单独的文件夹下(单独的应用程序和池)。就像是:

IIS
  |
  |__Main app (web site)
        |
        |__App1
        |
        |__App2


但是,我只是在这里感到困惑:


如何重用layout / dll acorss应用程序/池而不将其复制到每个应用程序中(也许这是一个愚蠢的问题)
如何使用MVC3控制器/动作功能,而不是直接使用硬编码的<a/>将用户导航到每个应用程序。我实际上尝试过。看起来主应用程序(MVC3)只能识别控制器并在其自己的项目中查看。


总而言之,我想做的是:在上面的树结构中部署我的应用程序,并让主应用程序从子应用程序中获取视图并显示在主应用程序框架中。

也许这不是一个好习惯,但是任何建议都可以接受!!!

非常感谢

最佳答案

听起来确实像您想在MVC中使用Areas。这不允许您在自己的应用程序池中运行嵌套的“应用程序”,但是它将完成您要执行的所有其他操作(共享布局,dll,Html.ActionLink,基于角色的对每个Area的访问等) )。您可以轻松地在所有区域中共享顶级导航,并且每个区域都有不同的子导航。我有一个两部分的博客文章,内容涉及在区域之间共享的单一布局,这可能会给您一些帮助(或想法)。

Single Layout for Areas with ASPX and Razor views (Part 1)-使用ASPX View Engine

Single Layout for Areas with ASPX and Razor views (Part 2)-使用Razor View Engine

如果您觉得在单个项目中在Areas中拥有子应用程序过于僵化,那么您也可以考虑使用MvcContrib在可移植Areas中创建子应用程序,然后在顶级应用程序中使用它们。

10-04 20:23