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

相關文章
相關標籤/搜索