【问题标题】:Asp.net MVC 5 separate projects for UI and WebAsp.net MVC 5 独立的 UI 和 Web 项目
【发布时间】:2016-07-27 08:02:35
【问题描述】:

如何将我的 MVC 项目分成 UI 特定(JS、CSS、图像、字体,可能还有视图)和控制器/模型特定(控制器、帮助程序、模型,可能是视图)。由于我们的前端开发人员大多独立于 Visual Studio 工作,因此我一直在寻找分离项目的最佳实践。任何指针或示例项目?

【问题讨论】:

  • 如果你所说的“前端开发人员”是指只做 HTML 而不是什么的网页设计师。我发现他们中的大多数人根本不会理解 MVC 项目背后的问题,因此最好让他们单独设计 HTML,然后获取最终的 HTML 并将其集成到您的 MVC 项目中。他们不会理解 Razor 语法、布局页面、模板、html 助手等方面的问题。这些都是你事后必须要做的事情。
  • 是的,但我们通常让他们根据需要使用剃须刀(用于调试 UI)。即使不是 razor,如果我们可以让它们独立于 MVC 项目,还有其他类型的文件(js、css)会很好。

标签: asp.net-mvc razor


【解决方案1】:

这就是我们最终完成的方式。

  • 创建一个名为 SolutionName.Client 的单独的 Visual Studio 项目(这是所有前端 js 和 scss 文件所在的位置)
  • 创建名为 SolutionName.MVC 的 MVC 项目(这是 asp.net mvc 项目)
  • 使用 Grunt.JS 编写任务,编译所有 js 和 css 文件并将它们放到 SoltuionName.MVC/Content 文件夹中
  • 类似地编写将所有视图(razor 文件)放入 SolutionName.MVC/Views 文件夹的任务。
  • 在项目构建设置中,添加预构建任务以运行 grunt 任务。

此设置需要几个小时才能使其正常工作,但它现在非常有用。

【讨论】:

    【解决方案2】:

    您可以轻松做到这一点,我在 MVC 中的每个项目也都这样做了。

    一个项目有你的控制器、视图模型,在我的例子中,任何与 MVC 的依赖关系解析相关的自定义逻辑和与 MVC 安全认证相关的自定义类。基本上任何涉及 MVC 框架核心且不参与渲染内容的代码。

    另一个几乎包含您在客户端使用的所有内容,以及前端所需的代码。在我的例子中,代码方面非常简约,并且包含了一些 Glimpse 和 Elmah 的代码。剩下的就是您的视图、样式、脚本、下载等静态内容。

    至于 App_Start 中的文件,我的视图项目有 Bundles、Filters,显然还有你可能拥有的任何 HtmlHelper,以及用于 LESS 的自定义 css 转换。

    我的控制器的App_Start 具有RouteConfig。这些不一定很重要,这只是我最终组织我的方式,实际上取决于您在启动这些组件期间需要访问哪些方面。

    我会说,为了节省您自己的时间,在您的 Views/web.config 文件中,为您的 Company.Project.ViewModels 命名空间添加一个命名空间条目,这样就可以在一个地方完成并且您不必将它添加到每个视图中,因为此命名空间将驻留在您的控制器项目中。

    您的带有 Views 的项目将成为您的启动项目。只需确保在global.asax 中您对FilterConfigRouteConfigBundleConfig 的调用都正确解析。

    这很容易做到,我的建议是自己尝试并按照您想要的方式进行拆分,如果您遇到问题,请回来询问困难,而不是寻找分步指南。

    底线是,是的,这是可能的,是的,它有效,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-30
      • 2012-10-05
      • 2015-01-04
      • 2021-10-27
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多