使用自定义项目使用MVC覆盖基础项目的各个部分

时间:2013-07-31 16:44:55

标签: c# asp.net-mvc asp.net-mvc-4

我现在在做什么

就像现在一样,每次我有一个新项目我都需要处理(所有这些项目都使用相当广泛的功能基础,但每个项目都有自定义功能,怪癖等),我必须要复制基础项目,然后修改复制的基础项目,以添加自定义功能。

想法

(我正在使用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,但是自定义项目没有这些,路由引擎将无法找到基本控制器的匹配视图,因为基础项目的视图不是被复制到输出目录。

结论

基本上我只是在寻找一些一般指导。我是以错误的方式看待这个吗?值得做吗?

另外,如果您发现任何误解,请纠正我!

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

这对MVC来说并不奇怪。事实上,它很常见。只需创建一个类库,并将模型,控制器,辅助类等放在那里。然后,您只需将此类库添加为其他项目中的参考。唯一复杂的是共享视图,因为默认情况下不会编译Razor视图。但是,为此,您可以使用Razor Generator