利用ActionFilterAttribute实现动态模板

创建LayoutInjecter类继承:ActionFilterAttribute

   using System.Web.Mvc;
    public class LayoutInjecter : ActionFilterAttribute
    {
        private readonly string _masterName;
        public LayoutInjecter(string masterName)
        {
            _masterName = masterName;
        }

        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            base.OnActionExecuted(filterContext);

            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {

            }
            else
            {
                if (filterContext.Result.GetType() == typeof(RedirectToRouteResult))
                {
                }
                else if(filterContext.Result.GetType() == typeof(ViewResult))
                {
                    ViewResult result = (ViewResult)filterContext.Result;
                    result.MasterName = _masterName;
                }
            }
        }
    }

在对应的Controller里面就可以加上这个属性并传入参数实现动态模板。

   [LayoutInjecter("~/Views/Shared/_Layout.cshtml")]
    public class SampleController : baseController
    {
        
    }


发表评论:

«   2021年10月   »
123
45678910
11121314151617
18192021222324
25262728293031
搜索
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
文章归档
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero

©2016 Sfaqs.com Rights Reserved. ICP备13067735号