Is it possible to reuse partial views on multiple

2019-04-10 05:05发布

问题:

I know ASP.NET MVC 3 doesn't support area reuse, which would be very handy for, say, user admin areas of web applications, but how about partial views?

Say I have Pager "control" as a Razor (or WebFormViewEngine, it doesn't matter) partial view which I can easily reuse inside my MVC application.

Is it possible to reuse it in multiple MVC applications other than by creating a partial view in the new application and copy-pasting the code?

回答1:

There is nothing buit-in the framework that allows you to do this. You may take a look at MVCContrib portable areas which allows you to embed and reuse views between multiple ASP.NET MVC applications. You may also find the following blog post useful.

Disclaimer: both those approaches rely on writing a custom VirtualPathProvider which doesn't work with precompiled ASP.NET applications. So if you intend to precompile your application before shipping don't use those. Personally I am in this situation and what I ended up doing is writing a custom NuGet package which contains all the necessary views and assemblies containing their respective view models and all that a developer has to do is to install the NuGet package from a centralized location withing the intranet/internet.



回答2:

In the O'Reilly book "Programming ASP.NET MVC 4" by Jess Chawick there is a chapter describing what you need. "CHAPTER 15 - Reusable UI Components"

Basically you create Class Library project with your views. You have to install RazorGenerator and set it as Custom Tool in the properties of the .cshtml files. This will generate C# code from the .cshtml files. Now to locate the views outside your standard search path in your MVC application you have to use the Nuget Package PrecompiledMvcEngine.

The book is very well written and you can find step by step info how to do it.