Asp.net mvc MVC3项目结构

Asp.net mvc MVC3项目结构,asp.net-mvc,Asp.net Mvc,我正试图找到最好的方式来规划我的MVC3项目。在网上搜索时,我遇到了一个建议,基本上是右键点击项目并添加区域。这样做的目的是在同一项目中创建具有相同控制器/视图/模型结构的区域文件夹。这不是我想要的。我想要有独立项目的灵活性。我将只保留主web项目中的视图。其他一切都在一个单独的项目中 为了实现这一尝试,我为我的控制器创建了一个单独的项目。现在我只能将控制器动作指向视图。在所有在线示例中,它都是右键单击并添加视图。这是一个类库项目,我没有那么大的灵活性我哪里做错了? 我发现的所有例子,包括我所经

我正试图找到最好的方式来规划我的MVC3项目。在网上搜索时,我遇到了一个建议,基本上是右键点击项目并添加区域。这样做的目的是在同一项目中创建具有相同控制器/视图/模型结构的区域文件夹。这不是我想要的。我想要有独立项目的灵活性。我将只保留主web项目中的视图。其他一切都在一个单独的项目中

为了实现这一尝试,我为我的控制器创建了一个单独的项目。现在我只能将控制器动作指向视图。在所有在线示例中,它都是右键单击并添加视图。这是一个类库项目,我没有那么大的灵活性我哪里做错了?

我发现的所有例子,包括我所经历的例子,基本上都解释了如何创建学习应用程序,这只适用于学习目的。大型商业应用程序不可能在一个项目中拥有所有视图/模型/控制器。或者这就是MVC应该采用的方式我不确定用鼠标点击是否也是一个好主意。在webforms世界中,也有很多针对初学者的应用程序的研究,这些应用程序使用鼠标点击来创建基本的CRUD应用程序,但在实际的商业项目中,我们从未使用过这些方法

你对此有何想法和指导


感谢您的时间…

我不明白您为什么不能使用内置生成器作为视图和控制器的基础?没有任何东西说您必须将它们保留为已生成。我个人认为这真的很好,能为我生成一个基础(用鼠标点击)

MVC项目只是一个UI层。为了大规模应用而在其中加入逻辑是愚蠢的。因此,对于所有UI,通常可以使用一个项目。事实上,它使您更容易获得UI的概览

也就是说,有一些方法可以获得基于插件的解决方案,您可以将控制器(、模型和视图)移动到类库中。但这并不容易

  • 您需要创建虚拟路径提供程序(以查找视图)
  • 嵌入所有视图
  • 修改项目文件以获得“添加视图”对话框等
  • 使用区域(使其更容易)
  • 告诉
    BuildManager
    插件DLL存在
  • 如果希望能够在visual studio中的运行时修改视图,还需要修改虚拟路径提供程序以访问插件文件夹中的视图。否则,任何更改都需要重新生成插件DLL

    更新

    MVC2视频(MVC3区域的工作原理相同):


    请注意,该视频适用于同一项目中的区域。在单独的类库中包含区域更为复杂。最简单的解决方案是按照其他人的建议使用便携式区域。

    MVC基于约定;约定是将所有视图放在/views上,模型放在/models中,控制器放在/controllers中。你可以改变传统,但这不会让你的生活更轻松

    从概念的角度来看,这是有道理的。如果您将所有域逻辑和数据访问保留在单独的项目中,那么只剩下与web相关的东西、控制器、视图模型和视图。这就是你的MVC项目


    请注意,如果您想将部分拆分为单独的项目,您可能会发现这很有用。

    为什么只将视图保留在“主web项目”中?我认为您缺少MVC的要点

    控制器是您的“主web”部件。它们是用户请求并发回的内容,而不是视图

    该视图仅提供一种布局HTML的方法,以便控制器推送到浏览器

    我认为真正应该是ViewModels的模型是为您的视图提供实质内容(即真实数据)

    因此,您可以看到MVC布局确实希望将这三者合理地组合在一起。控制器与用户交互,获取视图(布局)并用视图模型/模型(数据)填充视图。这是您的用户界面,MVC的所有三个部分(如果您使用ViewModel的话)都只用于UI


    数据从何而来,您的真实模型以及您想对其执行的任何操作都可以轻松地驻留在dll中的某个位置或一组web服务的另一端或其他任何位置。

    为什么大型商业应用程序不能在一个项目中拥有所有视图、模型和控制器?可以吗?是吗?有没有人有将所有东西都放在一个项目中的经验,并且从长远来看没有这样做的问题?在web表单项目中,代码将调用单独项目中的应用程序层或业务层。在asp.net MVC世界中,这不是已经完成了吗?我并不反对把一切都放在一个项目中。我所需要的只是有经验的人的指导。。。并确认这是最好的方式。。或者至少有一种更好的方法,比如说我把视图和控制器保持在同一个web项目中。但随后我将模型转移到一个单独的类库项目中。我的数据访问层位于单独的类库项目中,业务层位于单独的类库项目中。从你的经验来看,这是一个好的做法吗?我仍在充分尝试这些领域。。但是我不想认为这是唯一的方法。我的政策是永远不要在UI中使用真正的域模型,我只使用ViewModels,它是专门为UI设计的模型,而不是满足我的域要求的模型。这些视图模型不需要直接映射到域模型,它们从域模型中拾取并选择要显示的属性。这会导致相当多的“映射”代码,但您可以使用automapper来减轻这一负担。域模型现在可以在任何地方,在一个层中,在一个web服务中,在另一种技术中。我在网上保存的东西