4

我知道ASP.NET MVC 3不支持区域重用,这对于Web应用程序的用户管理区域来说非常方便,但部分视图又如何?是否可以在ASP.NET MVC中的多个项目上重用部分视图?

假设我有传呼机“控制”作为Razor(或WebFormViewEngine,无所谓)局部视图,我可以在我的MVC应用程序内轻松地重新使用。

是否有可能在多个MVC应用程序中重用它,而不是在新应用程序中创建一个局部视图并复制粘贴代码?

回答

7

在框架中没有什么可以让你做到这一点。您可以查看MVCContrib portable areas,它允许您在多个ASP.NET MVC应用程序之间嵌入和重用视图。您也可以找到following blog post有用。

声明:这两种方法都依靠编写自定义的VirtualPathProvider,其中不起作用与预编译的ASP.NET应用程序。因此,如果您打算在发货前预编译应用程序,请不要使用这些应用程序。就我个人而言,我正处在这种情况下,我最终做的是编写一个custom NuGet package,其中包含所有必要的视图和程序集,其中包含各自的视图模型,开发人员需要做的所有事情是从集中位置安装NuGet程序包,并使用Intranet /互联网。

+3

男人你快.... :) – 2011-03-08 22:57:12

+0

它不工作吗? http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/ – 2013-04-04 16:53:55

+0

我试图使用该手册,并意识到它不是工作与asp mvc 4和工作室2012年,所以我重新编译项目形式与新的asseblies(asp mvc 4)的git集线器,并将vie wbuilder更改为RazorGenerator下一个我已经为asp问题应用补丁,但它仍然无法正常工作 – 2013-04-04 16:58:19

4

在由Jess Chawick撰写的O'Reilly书籍“Programming ASP.NET MVC 4”中,有一章描述了你需要的东西。 “第15章 - 可重用的UI组件”

基本上,您可以使用视图创建类库项目。您必须安装RazorGenerator,并将其设置为.cshtml文件属性中的自定义工具。这将从.cshtml文件生成C#代码。现在要在您的MVC应用程序中查找标准搜索路径之外的视图,您必须使用Nuget Package PrecompiledMvc​​Engine。

这本书写得很好,你可以找到一步一步的信息如何做到这一点。

相关问题