在不同的Mvc解决方案中使用相同的代码

时间:2013-07-27 23:55:21

标签: c# asp.net-mvc plugins partial-views asp.net-mvc-areas

我正在使用asp.net mvc 3和.net framework 4.0与C#

假设我有NivoSlider(滑块)html代码。它还有js,css和图像文件。

我想将NivoSlider cshtml代码和js / css / images用作“项目”,我想将其添加到不同的MVC解决方案中。它将成为一个插件。

我无法将其视为部分视图,因为我必须将所有css,js和imges文件移动到新的解决方案中。我看了“mvc区域”,但它没有渲染我的js和css文件(事实上;使用“区域”并不是一个完美的方式,因为你知道)...我查找了一些基于插件的架构,但没有 - 他们很容易实现。我的时间有限。

那么我该如何解决这个问题呢?

编辑:我可以使用此http://razorgenerator.codeplex.com/ - 但如果您想出一个想法,我正在寻找其他解决方案......

5 个答案:

答案 0 :(得分:15)

您可以创建一个私有Nuget并为其创建一个小型安装。这样您就可以直接从包安装,更新和卸载。

您甚至可以制作在计算机之间复制的本地化包。 Nuget有一种非常简单的方法来指定要将文件提取到的位置,以及要提取的文件。

答案 1 :(得分:1)

我在商业项目中使用剃须刀发生器,它功能齐全但不理想。

我考虑的其他可能性是添加文件作为链接(参见无名者的回答)

还会覆盖ViewEngine Can I specify a custom location to "search for views" in ASP.NET MVC?

甚至是符号链接(Windows中文件夹的快捷链接) https://superuser.com/questions/234422/does-windows7-support-symbolic-links-folder-shortcuts

答案 2 :(得分:1)

如上所述,Razor视图可以作为编译类嵌入到程序集中(通过使用Razor Generator)。 静态资源如.html,.js,.png可以作为嵌入式资源在汇编中找到,并由应用程序通过VirtualPathProvider提供服务(自定义或使用现有的https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider

答案 3 :(得分:0)

您可以将这些文件包含在Web API项目中,并将它们提供给每个解决方案。每个解决方案都应包含通过Web API接口使用这些文件的逻辑。

答案 4 :(得分:0)

将您的asp.net mvc Razor视图编译为单独的dll

我希望能够在dll中嵌入已编译的Razor视图。这样可以轻松分发嵌入了默认视图的asp.net mvc“模块”,但允许您将文件放在“views”文件夹中以覆盖这些默认视图。

http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/