【问题标题】:How to seperate MVC project to several smaller MVC projects如何将 MVC 项目分离为几个较小的 MVC 项目
【发布时间】:2012-03-19 19:48:12
【问题描述】:

我有一个 MVC 3 应用程序,它具有一些核心功能(最重要的是自动化),但主要用作不同区域或模块的门户。我想将它组织成不同的模块,只需稍作改动也可以部署为自己的网站。

该项目由论坛、博客引擎、用户之间的消息传递 + 4-5 个即将推出的模块组成。

我查看了 ScottGu 关于 MVC 2 的博客,发现一些看起来很完美的东西:

根据客户的需求,我只想为他们提供他们可以使用的确切模块。从维护的角度来看,能够在每个项目中工作和更新所引用的程序集也更容易,并且只需为在其服务器上具有该特定模块的客户进行全面更新。

但是在 MVC 3 中没有明显的方式来使用区域,你知道怎么做吗?

状态 我将尝试将 MVCContrib Portable 区域添加到我现有的解决方案中,并将我的区域转换为 ower 并将返回结果。如果可行,我会将其标记为已接受的解决方案。

【问题讨论】:

  • 您看过便携式区域(MVCContrib 的一部分)-mvccontrib.codeplex.com/documentation 吗?他们会适合你正在寻找的东西
  • @Russ 是的,简而言之,但根据 ScottGu 的帖子,我认为这是在没有其他框架的情况下完成的。当 MVC 4 出现时,我可能会使用它开发新模块,但据我所知,便携式区域可能不支持它,因此被卡住有点令人沮丧。也许我太小心了,不会有问题的。
  • 为什么不能在 MVC 3 中遵循 ScottGu 的方法?
  • @jrummell 他没有描述如何,似乎区域在 MVC 3 中的工作方式有点不同。看:weblogs.asp.net/scottgu/archive/2009/07/31/…
  • 我没有尝试过,但它看起来在 MVC 3 中也可以工作。无论如何,MvcContrib Portable Areas 的自动视图/脚本/内容嵌入资源功能看起来非常不错。它允许您仅引用区域项目的 dll,而无需将区域视图/脚本/内容复制到您的主项目。

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


【解决方案1】:

【讨论】:

  • 谢谢。如上所述,我对它进行了简要介绍,但由于更新,我有点急于让它成为 mye 应用程序的核心部分。但是,如果这是解决我的问题的公认方法并且有很多使用它,我想我只是太怀疑了。虽然应该是 MVC 的固有部分,但根据 Scott Gu 的博客,它似乎至少是计划。
  • 一个问题我似乎没有找到关于这个方法的答案。将此添加到现有解决方案并将两个现有区域迁移到便携式区域是否存在问题?
  • @cfs - 找出答案的唯一方法就是尝试!
【解决方案2】:

这在 MVC3 中是可能的: 从: http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects

右键单击 shell 项目并“添加区域...”。输入区域名称。这将创建一个包含您所在区域的区域文件夹。 (这不是 100% 需要的,但您确实需要“Areas”文件夹,您可以为您的应用程序窃取 XXXXAreaRegistration 类。) 在您的解决方案中创建一个新的 MVC3 空项目以匹配您的区域。将 XXXXAreaRegistration.cs 文件从 shell mvc 项目移动到新项目,并根据需要调整命名空间。 (或者你可以手动创建一个区域注册类,这是一个非常简单的类。以添加区域模板生成一个为例。) 根据需要编辑 AreaRegistration 文件夹中的路由。 删除模板向导添加的区域文件夹下的文件夹。 修改新项目的 web.config 并取出连接字符串和 authentication、membership、profile、rolemanger 部分。您不需要部署此 web.config,但在开发期间如果没有它,razor intellisense 将无法工作。 从该区域的项目中删除 global.asax 文件,否则您将获得额外的默认路由。 在 shell 项目的“Areas”文件夹中创建一个虚拟目录,以您的区域名称作为别名,并将其指向您的“区域”项目。为此,您需要使用 IIS 或 IIS Express。我使用 IIS。对于 IIS Express,您可以使用 IIS Express 文件夹中的 appcmd.exe,也可以编辑 applciationhost.config 文件。

【讨论】:

  • 感谢 Adam,但这表明我必须对部署到的每个 IIS 进行特定配置并设置虚拟目录?这不是最大的问题,但理想情况下我想避免这种情况。
  • 链接到的 url 不再可用。我建议将其更改为 web.archive.org 中最后一个已知的缓存副本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
相关资源
最近更新 更多