【问题标题】:asp.net multiple sites / facets mvcasp.net 多个站点/方面 mvc
【发布时间】:2013-07-11 20:27:55
【问题描述】:

早安,

我目前正在开发一个 asp.net mvc 4 站点。

到目前为止,我已经创建了一个前端站点,当用户访问我的 url 时会提示他们。现在我想做一个后端,某些用户可以登录并访问各种功能、设置、选项等。

现在理想情况下,您将在 Visual Studio 的两个不同项目中制作前端和后端。但是现在我将如何将它们链接在一起?例如,如果我已经在后端登录,那么前端应该仍然知道我已经登录。所以本质上它必须仍然是一个站点。我只想在不同的项目中拥有不同的组件/方面。

我想这样做的原因是为了在 VS 中组织项目并尽可能地尝试和调整它。

我可以这样做吗?

【问题讨论】:

  • 您能否详细说明您的问题 - 特别是两个项目之间的区别。这是您还为其创建管理区域的单个网站,还是多个网站的公共管理区域?为什么您希望或需要将它们放在单独的项目中?
  • 这是一个我想添加管理区域的单个站点。我想让它们分开项目的原因是为了组织和分离文件。管理部分有不同的主题、html css、模型等。所以隔离它是有意义的。此外,当站点增长和添加功能时,项目将变得非常混乱和混乱。我不想将来自两个站点的类和文件都混合在一个类中。他们还需要不同的系统设置等。

标签: asp.net visual-studio asp.net-mvc-4 project


【解决方案1】:

尽管最有可能将这些创建为具有通用身份验证令牌的单独项目(我可以想到至少一种-尽管是骇人听闻的方法),但根据您的要求,我强烈建议使用单个项目一个管理区域,用于分离(和命名空间)您的模型、视图和控制器以用于管理功能。

虽然您没有指定您正在使用的 ASP.NET MVC 的哪个版本,但 Areas 自版本 2 起已在 MVC 中可用。

这将允许您与管理员相关的视图、控制器、模型和其他类在项目结构中的 /Areas/Admin 下进行逻辑分组(如果您想隐藏东西,大部分时间可能会被折叠起来)和还可以将任何类命名为 SiteProject.Admin.Class,这将使它们与主站点中的类分开。

如果您考虑将它们放在不同的(引用的)项目中,然后将项目引用为 AdminProject.Class,这在概念上没有什么不同。该区域有自己的路线定义,让您可以灵活地处理不同于主站点的路线,并且其自己的 Web.config 允许附加或更改设置。

使用区域的优点是您不必围绕身份验证做任何额外的工作,您可以将项目部署为单个实体,并且您不必担心项目之间的路由请求(我想子域将是在单独的项目模型中分离请求的最直接的方法)。如果您想保持相同的外观和感觉(当然您可以根据需要使用完全不同的布局),管理区域中也将提供任何共享视图或局部视图,并且您将能够引用静态资源(例如作为图像、脚本和样式表)使用应用程序相关 URL(tilda - “~/Content/styles.css”)。您也可以使用任何特定于应用程序(如 Session)的东西,这可能非常重要(尽管使用 SqlSessionProvider 之类的东西当然可以为多个应用程序建立一个公共会话存储)。

如果您订阅了 Pluralsight,K Scott Allen 在他的 MVC2 课程 ASP.NET MVC 2.0 Fundamentals 中讨论了一些领域(尽管他的 Views 显然不使用 Razor 语法,但这些章节中的其他内容仍然相关)。

如果您想在不同的项目中拥有您的业务实体和逻辑,那么这既合适又鼓励未来的可重用性,但在这种情况下,我觉得将相关项目放在一起以保持事物更加明智干而简单。

【讨论】:

  • 谢谢。听起来区域正是我正在寻找的。​​span>
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2011-06-07
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多