MVC学习系列——RazorViewEngine扩展

       有时候,咱们的项目涉及到多种风格,咱们能够经过扩展RazorViewEngine,这样就能够保持后台代码不发生变化。html

新建类ThemeViewEngine继承于RazorViewEngineweb

 1  public class ThemeViewEngine : RazorViewEngine
 2     {
 3         public ThemeViewEngine(string theme)
 4         {
 5             ViewLocationFormats = new[]
 6            {
 7                 "~/Views/Themes/" + theme + "/{1}/{0}.cshtml",
 8                 "~/Views/Themes/" + theme + "/Shared/{0}.cshtml"
 9             };
10 
11             PartialViewLocationFormats = new[]
12             {
13                 "~/Views/Themes/" + theme + "/{1}/{0}.cshtml",
14                 "~/Views/Themes/" + theme + "/Shared/{0}.cshtml"
15             };
16 
17             AreaViewLocationFormats = new[]
18             {
19                 "~Areas/{2}/Views/Themes/" + theme + "/{1}/{0}.cshtml",
20                 "~Areas/{2}/Views/Themes/" + theme + "/Shared/{0}.cshtml"
21             };
22 
23             AreaPartialViewLocationFormats = new[]
24             {
25                 "~Areas/{2}/Views/Themes/" + theme + "/{1}/{0}.cshtml",
26                 "~Areas/{2}/Views/Themes/" + theme + "/Shared/{0}.cshtml"
27             };
28         }
29     }

Global类中,注册这种引擎spa

1   //不一样风格
2             if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["Theme"]))
3             {
4                 var activeTheme = ConfigurationManager.AppSettings["Theme"];
5                 ViewEngines.Engines.Insert(0, new ThemeViewEngine(activeTheme));
6             }

web.config配置具体风格:code

1 <add key="Theme" value="China" />

项目文件结构:
orm

View:htm

   America:blog

1 @{
2     ViewBag.Title = "ShowTheme";
3 }
4 
5 <h2>ShowTheme   America</h2>

  China:继承

1 @{
2     ViewBag.Title = "ShowTheme";
3 }
4 
5 <h2>ShowTheme   China</h2>

 

 

运行:string

1  public ActionResult ShowTheme()
2         {
3             return View();
4         }

效果图:
it

相关文章
相关标签/搜索