zoukankan      html  css  js  c++  java
  • MVC根据用户角色选择模版页master

    首先,我们要重写一个View方法,才能更好的返回指定的master页面

    对于前台controller来说,我们建立一个它的基类

     /// <summary>
        /// 前台Controller的基类,
        /// 提供一些共同属性和方法
        /// Created By : 张占岭 
        /// Created Date : 2011-10-17
        /// Modify By:
        /// Modify Date:
        /// Modify Reason:
        /// </summary>
        public abstract class BaseController : Controller
        {
            /// <summary>
            /// 根据用户角色,返回它的模版页
            /// </summary>
            protected string MasterFile
            {
                get
                {
                    return UIHelper.GetMasterPage(Tsingda.XXB.Common.WebSession.UserRole);
                }
            }

            /// <summary>
            /// 重写controller的View方法,使它可以根据用户角色应用指定视图
            /// </summary>
            protected new ViewResult View(string viewName, object model)
            {
                ViewData.Model = model;
                return new ViewResult
                {
                    ViewName = viewName,
                    MasterName = this.MasterFile,
                    ViewData = ViewData,
                    TempData = TempData
                };
            }

            protected new ViewResult View(object model)
            {
                return this.View(null, model);
            }
        }

    我们根据角色来选择不同的模版页:

     /// <summary>
        /// 前台通用方法
        /// </summary>
        public partial class UIHelper
        {
            /// <summary>
            /// 根据用户角色,得到指定的模板
            /// <param name="role"></param>
            /// <returns></returns>
            public static string GetMasterPage(Tsingda.XXB.Common.CustomEnum.UserRole role)
            {
                string masterPageFile = "";
                switch (role)
                {
                    case Common.CustomEnum.UserRole.Student:
                        masterPageFile = "~/Views/Shared/StudentClassCenter.Master";
                        break;
                    case Common.CustomEnum.UserRole.Teacher:
                        masterPageFile = "~/Views/Shared/TeacherCenter.Master";
                        break;
                    case Common.CustomEnum.UserRole.Parents:
                        masterPageFile = "~/Views/Shared/ParentCenter.Master";
                        break;
                    case Common.CustomEnum.UserRole.Agents:
                        break;
                    case Common.CustomEnum.UserRole.Visitor:
                        break;
                }
                return masterPageFile;
            }
        }

    这样,就可以了,其实这部分代码中,核心功能就是如何让controller里的代码控制页面的母板,这里,我们返回了viewresult对象解决了这个问题

      return new ViewResult
                {
                    ViewName = viewName, //view名称
                    MasterName = this.MasterFile, //母板文件
                    ViewData = ViewData, //viewdata对象
                    TempData = TempData
                };

  • 相关阅读:
    Golang Failpoint 的设计与实现
    没涉及到最值求解;观点:矩阵乘法无法表达出结果。 现实生活中事件、现象的数学表达
    多元微分学 枚举破解15位路由器密码 存储空间限制 拆分减长,求最值 数据去重
    ARP Poisoning Attack and Mitigation Techniques ARP欺骗 中间人攻击 Man-In-The-Middle (MITM) attack 嗅探 防范 Can one MAC address have two different IP addresses within the network?
    The C10K problem
    HTTP Streaming Architecture HLS 直播点播 HTTP流架构
    现代IM系统中消息推送和存储架构的实现
    现代IM系统中的消息系统架构
    长连接锁服务优化实践 C10K问题 nodejs的内部构造 limits.conf文件修改 sysctl.conf文件修改
    doubleclick cookie、动态脚本、用户画像、用户行为分析和海量数据存取 推荐词 京东 电商 信息上传 黑洞 https://blackhole.m.jd.com/getinfo
  • 原文地址:https://www.cnblogs.com/lori/p/2216125.html
Copyright © 2011-2022 走看看