zoukankan      html  css  js  c++  java
  • MVC根据角色自动选择母版页

    在使用MVC开发应用程序时,如果希望根据不同的角色选择不同风格的页面,可以通过动态设置ViewResult对象中的MasterName属性来实现,具体看代码:

    一个对controller进行抽象的基类:

    View Code
     1  public abstract class BaseController : Controller
     2     {
     3         /// <summary>
     4         /// 默认构造方法
     5 
     6      /// 根据角色为MasterFile进行赋值
     7         /// </summary>
     8         public BaseController() : this(UIHelper.GetMasterPage(Tsingda.XXB.Common.WebSession.UserRole)) { }
     9 
    10         public BaseController(string masterfile)
    11         {
    12             this.MasterFile = masterfile;
    13         }
    14 
    15    /// <summary>
    16         /// 重写controller的View方法
    17 
    18     /// </summary>
    19         protected new ViewResult View(string viewName, object model)
    20         {
    21             ViewData.Model = model;
    22             return new ViewResult
    23             {
    24                 ViewName = viewName,
    25                 MasterName = this.MasterFile,
    26                 ViewData = ViewData,
    27                 TempData = TempData
    28             };
    29      }
    30 
    31 }
    GetMasterPage方法的内容如下:
      
    View Code
     1       /// <summary>
     2      /// 根据用户角色,得到指定的模板
     3      /// <param name="role"></param>
     4         /// <returns></returns>
     5         public static string GetMasterPage(UserRole role)
     6         {
     7             string masterPageFile = "";
     8             switch (role)
     9             {
    10                 case UserRole.Guest:
    11                     masterPageFile = "~/Views/Shared/Guest.Master";
    12                     break;
    13                 case UserRole.Admin:
    14                     masterPageFile = "~/Views/Shared/Admin.Master";
    15                     break;
    16                 case UserRole.Manager:
    17                     masterPageFile = "~/Views/Shared/Manager.Master";
    18                     break;
    19               }
    20             return masterPageFile;
    21         }
    当需要调用时,直接可以这样:
    1  public class OrderController : BaseController
    2     {
    3      public ActionResult Index()
    4      {
    5        return View();
    6      }
    7   }
    如果不希望根据角色选择母版页,想自己根据自己的View视图去控制,可以这样
    1 public class OrderController : BaseController 
    2 { 
    3   public OrderController ():base(“”){} //将一个空字符传给基类的构造方法
    4     public ActionResult Index() 
    5     {
    6       return View();
    7     }  
    8 }
     
    本篇文章用到的技术有:扩展方法,抽象类,方法重载,方法重写等知识后。
  • 相关阅读:
    IO流(读取键盘录入)
    IO 流 自定义字节流的缓冲区-read 和write 的特点
    IO流 字节流的缓冲区
    IO流 拷贝图片
    IO流-字节流File读写操作
    IO流 带行号的缓冲区
    IO流(装饰设计模式)
    IO流-ReadLine方法的原理 自定义BufferedReader
    IO流 Buffered 综合练习
    IO流 BufferedWriter
  • 原文地址:https://www.cnblogs.com/lori/p/2506266.html
Copyright © 2011-2022 走看看