每个用户都有自己的模板页,cnblogs也有这种功能,不知道是怎样做的- -

在MVC里实现,我在Controller里加了1个过滤。以下代码的意思是在“返回执行的时候”修改返回的模板页。

        protected override void OnResultExecuting(ResultExecutingContext filterContext)
        
{
            ActionResult actionResult 
= filterContext.Result;//获取ActionResult
            if (!actionResult.GetType().Equals(typeof(ViewResult)))//这里用于过滤不是返回ViewResult的ActionResult
            {
                
base.OnResultExecuting(filterContext);
                
return;
            }

            ViewResult viewResult 
= (ViewResult)actionResult;
            
string id = filterContext.RouteData.Values["xxx参数"].ToString().ToLower();//获取路由中的参数
            ViewData["xx"= "xxxx";//模板页需要的数据还可以在这里赋
            viewResult.MasterName = string.Format(MASTER_PATH, id);//设置模板页
            filterContext.Result = viewResult;//赋予新的ViewResult
            base.OnResultExecuting(filterContext);
        }

 

Posted on 2009-05-21 19:45  ipinko  阅读(643)  评论(0编辑  收藏  举报