就像现在一样,每次我有一个新项目我都需要处理(所有这些项目都使用相当广泛的功能基础,但每个项目都有自定义功能,怪癖等),我必须要复制基础项目,然后修改复制的基础项目,以添加自定义功能。
(我正在使用ASP.NET MVC4,使用Visual Studio 2012)
基本上,我想要一个“基础项目”:
基础项目
-Controllers
-Models
-views
自定义项目
-Controllers
-Models
-views
作为我的MVC项目的基础。然后,当我去创建一个新项目(从基础项目中分离出来)时,我将基础项目作为子项目包含在解决方案中,而在我的新项目中,只需要编写控制器/模型/视图。不同于基础(我想覆盖那些,或类似的东西)。
这样,当我更改基础项目时,我所有不同自定义项目的基础项目也会更新,这样我就可以更新/ bugfix / etc基础项目,而不必手动更新每个自定义项目项目包括这个新的基本功能。
我明白我想要的东西对于MVC来说有点奇怪,但我想我可以让整个路由引擎以我想要的方式工作,但我只是想知道是否有任何解决方案,这是更容易实现。我觉得这是一件很正常的事情。或者我在考虑整个问题错了?
到目前为止,我已经创建了一个基础项目和一个自定义项目,如果自定义控制器中没有Action,我可以在自定义项目中显示基本功能,但基础项目使用自定义项目查看该Action,而我需要基础项目使用它自己的Action和View,如果它们不存在于自定义项目中。
基本上,如果我去: http://mytest.com/Home/Index
基础项目有一个带有索引操作的HomeController,但是自定义项目没有这些,路由引擎将无法找到基本控制器的匹配视图,因为基础项目的视图不是被复制到输出目录。
基本上我只是在寻找一些一般指导。我是以错误的方式看待这个吗?值得做吗?
另外,如果您发现任何误解,请纠正我!
感谢您的时间。
答案 0 :(得分:1)
这对MVC来说并不奇怪。事实上,它很常见。只需创建一个类库,并将模型,控制器,辅助类等放在那里。然后,您只需将此类库添加为其他项目中的参考。唯一复杂的是共享视图,因为默认情况下不会编译Razor视图。但是,为此,您可以使用Razor Generator。