Asp.net MVC 5用于UI和Web的独立项目

时间:2014-07-21 18:46:26

标签: asp.net-mvc razor

如何将我的MVC项目分为特定于UI(JS,CSS,图像,字体和可能的视图)和特定于控制器/模型(控制器,助手,模型和可能是视图)。由于我们的前端开发人员主要独立于Visual Studio,我一直在寻找分离项目的最佳实践。任何指针或示例项目?

2 个答案:

答案 0 :(得分:3)

这就是我们最终的结果。

  • 创建一个名为SolutionName.Client的独立Visual Studio项目(这是所有前端js和scss文件的去处)
  • 创建名为SolutionName.MVC的MVC项目(这是asp.net mvc项目)
  • 使用Grunt.JS编写编译所有js和css文件的任务并将其删除到SoltuionName.MVC / Content文件夹
  • 同样编写将所有视图(剃刀文件)放入SolutionName.MVC / Views文件夹的任务。
  • 在项目构建设置中,添加预构建任务以运行grunt任务。

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

答案 1 :(得分:2)

你可以很容易地做到这一点,我也为MVC中的每个项目都做过。

一个项目有你的Controllers,ViewModel,在我的例子中,任何与MVC的依赖性解析相关的自定义逻辑和与MVC的安全认证相关的自定义类。基本上任何触及MVC框架核心的代码都不参与渲染内容。

另一个几乎拥有您在客户端使用的所有内容,以及前端所需的代码。在我的情况下,在代码方面,这是非常简约的,并包含一些Glimpse和Elmah的代码。其余的是你的视图,样式,脚本,静态内容,如下载等。

对于App_Start中的文件,我的视图项目有Bundles,Filters,显然你可能有任何HtmlHelpers,自定义css转换就像LESS一样。

我的控制器App_Start拥有RouteConfig。这些并不一定是关键,它只是我最终组织我的方式,并且真正取决于在这些组件启动期间您需要访问哪些方面。

我会说,为了节省时间,在Views/web.config文件中,为Company.Project.ViewModels命名空间添加命名空间条目,以便在一个地方完成,而不必将其添加到每个视图,因为此命名空间将驻留在您的Controllers项目中。

带有视图的项目将是您的启动项目。只需确保global.asaxFilterConfig的调用,RouteConfigBundleConfig所有问题都能正确解析。

这很容易做到,我的建议是自己尝试并按照你想要的方式分解它,如果你有问题,请回过头来询问困难,而不是寻找一步一步的指南。

底线是,是的,它是可能的,是的,它可行,