zoukankan      html  css  js  c++  java
  • MVC学习系列——RazorViewEngine扩展

           有时候,我们的项目涉及到多种风格,我们可以通过扩展RazorViewEngine,这样就可以保持后台代码不发生变化。

    新建类ThemeViewEngine继承于RazorViewEngine

     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类中,注册这种引擎

    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配置具体风格:

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

    项目文件结构:

    View:

       America:

    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>

    运行:

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

    效果图:

  • 相关阅读:
    python3+requests库框架设计03-请求重新封装
    python3+requests库框架设计02-封装日志类
    [patl2-001]紧急救援
    [patl1-046]整除光棍
    latex学习
    matlab基础功能实践
    dll注入及卸载实践
    编译原理大作业暂存
    12.24逆向工程上机作业整理
    [poj1703]Find them, Catch them(种类并查集)
  • 原文地址:https://www.cnblogs.com/xuliang1992/p/5329641.html
Copyright © 2011-2022 走看看