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

5
我知道ASP.NET MVC 3不支持区域重用,例如Web应用程序的用户管理区域,但是部分视图怎么样呢?
假设我有一个Pager "控件"作为一个Razor(或WebFormViewEngine)部分视图,我可以在我的MVC应用程序中轻松重用它。
除了创建一个新应用程序中的部分视图并复制粘贴代码之外,是否可以在多个MVC应用程序中重用它?
2个回答

7

在这个框架中,没有内置的功能可以实现这个目标。你可以看一下MVCContrib portable areas,它允许你在多个ASP.NET MVC应用程序之间嵌入和重用视图。你也可能会发现这篇博客文章很有帮助。

免责声明:这两种方法都依赖于编写自定义VirtualPathProvider并且不能与预编译的ASP.NET应用程序一起使用。因此,如果你打算在发布前对应用程序进行预编译,请不要使用这些方法。就我个人而言,我处于这种情况,并且最终所做的是编写一个自定义NuGet包,其中包含了所有必要的视图和包含其各自视图模型的程序集,开发人员只需要从企业内部网络/互联网的一个集中位置安装NuGet包即可。


它完全不工作吗?http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/ - Vladimir Shmidt
我尝试使用那个手册,但意识到它不适用于ASP MVC 4和Studio 2012,所以我重新编译了来自Git Hub的项目,并更换了视图生成器为RazorGenerator。接下来,我应用了ASP问题的补丁,但仍然无法正常工作。 - Vladimir Shmidt

4
在Jess Chawick撰写的O'Reilly图书“Programming ASP.NET MVC 4”中,有一章节描述了您需要的内容:“第15章-可重用UI组件”。
基本上,您需要创建一个带有视图的类库项目。您必须安装RazorGenerator并在.cshtml文件的属性中将其设置为自定义工具。这将从.cshtml文件生成C#代码。现在,要将视图定位在MVC应用程序中标准搜索路径之外,您必须使用Nuget Package PrecompiledMvcEngine。
该书写得非常好,并且您可以找到逐步说明如何执行操作的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接