是否可以在ASP.NET MVC中重用多个项目的部分视图?

时间:2011-03-08 22:53:40

标签: asp.net-mvc-3 razor partial-views code-reuse webforms-view-engine

我知道ASP.NET MVC 3不支持区域重用,这对于Web应用程序的用户管理区域来说非常方便,但部分视图怎么样呢?

假设我将Pager“控制”作为Razor(或WebFormViewEngine,无关紧要)部分视图,我可以在MVC应用程序中轻松重复使用。

除了在新应用程序中创建局部视图并复制粘贴代码之外,是否可以在多个MVC应用程序中重用它?

2 个答案:

答案 0 :(得分:7)

框架中没有任何东西可以让你这样做。您可以查看MVCContrib portable areas,它允许您在多个ASP.NET MVC应用程序之间嵌入和重用视图。您可能还会发现following blog post有用。

免责声明:这两种方法都依赖于使用预编译的ASP.NET应用程序编写不起作用的自定义VirtualPathProvider 。因此,如果您打算在发货之前预先编译您的应用程序,请不要使用它们。我个人在这种情况下,我最终做的是编写一个custom NuGet package,其中包含所有必要的视图和包含各自视图模型的程序集,开发人员必须做的就是从集中安装NuGet包内部网/互联网的位置。

答案 1 :(得分:4)

在O' Reilly的书"编程ASP.NET MVC 4"通过Jess Chawick,有一章描述了你的需求。 "第15章 - 可重用的UI组件"

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

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