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
                };

  • 相关阅读:
    自己写的一些公共js方法
    node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
    node(03 fs文件模块)
    node (02 CommonJs 和 Nodejs 中自定义模块)顺便讲讲module.exports和exports的区别 dependencies 与 devDependencies 之间的区别
    node.js (01http 模块 url 模块)
    Ubuntu 16.04 下python2和python3及对应的pip的方法
    MySQL划重点-查询-聚合
    MySQL划重点-查询-条件
    MySQL命令
    使用Navicat for Mysql连接装在虚拟机Ubuntu16.04上的mysql服务器
  • 原文地址:https://www.cnblogs.com/lori/p/2216125.html
Copyright © 2011-2022 走看看