方法就是使用:ActionFilterAttribute
它的几个方法:OnActionExecuted,OnActionExecuting,OnResultExecuted和OnResultExecuting,它们记录一个action从加载到页面最终显示在浏览器的全过程,这个东西一般用在页面权限验证,LayOut页面控制上
这里面的几个方法执行顺序:OnActionExecuting action执行前
OnActionExecuted action执行后
OnResultExecuting 页面渲染后
OnResultExecuted 页面渲染结果

可以通过ActionFilterAttribute的特性,写个派生类,然后去覆盖OnActionExecuted
将layout页面修改(注意是修改,因为在action执行后layout已经是默认的布局页了)

 /// <summary>
/// 自定义模板页面
/// </summary>
public class LayoutAttribute : ActionFilterAttribute
{
private readonly string _masterName;
public LayoutAttribute(string masterName)
{
_masterName = masterName;
}
/// <summary>
/// 页面渲染结束后执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _masterName;
}
}
}

最后把它应用到controller或者action上,使用很简单

 [Filters.Layout("_LayoutEd")]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; return View();
}
[Filters.Layout("_LayoutEd")]
public ActionResult About()
{
ViewBag.Message = "Your app description page."; return View();
} public ActionResult Contact()
{
ViewBag.Message = "Your contact page."; return View();
}
}

MVC小系列(十六)【在控制器级别或具体Action级别上动态设定模板页(Layout)】的更多相关文章

  1. 爱上MVC3~在控制器或Action上动态设定模板页(Layout)

    回到目录 很多境况下,我们需要设置自己模块的layout,即它的布局页面,在MVC2中叫它模板页面,你可以在return view方法时设置它,当然,这不是一种好方法,因为我不想每个action都去设 ...

  2. MVC小系列(六)【无刷新的验证码】

    做个无刷新的验证码功能: 第一步:首先,在公用项目中建立一个生成图片验证码的类型ValidateCode /// <summary> /// 生成验证码对象 /// </summar ...

  3. S3C2416裸机开发系列十六_sd卡驱动实现

    S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子    1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...

  4. MVC小系列(八)【改变Areas的FindView顺序】

    MVC小系列(八)[改变Areas的FindView顺序] 一般项目比较大的话,会根据模块建立Areas,这样结构清晰,也有利于路由的部署, 1 Areas下有自己的_LayOut模板,而如果希望所有 ...

  5. MVC小系列(七)【分部视图中的POST】

    MVC小系列(七)[分部视图中的POST] 在PartialView中进行表单提交的作用:1 这个表单不止一个地方用到,2 可能涉及到异步的提交问题 这两种情况都可能需要把表单建立在分部视图上, 使用 ...

  6. 学习ASP.NET Core Razor 编程系列十六——排序

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. 为什么不让用join?《死磕MySQL系列 十六》

    大家好,我是咔咔 不期速成,日拱一卒 在平时开发工作中join的使用频率是非常高的,很多SQL优化博文也让把子查询改为join从而提升性能,但部分公司的DBA又不让用,那么使用join到底有什么问题呢 ...

  8. MVC小系列(二)【Razor 模板引擎】

    Razor 模板引擎 Razor模板页:它使我们不用再使用master模板了 一 :@Url.Content:是可以加载CSS和JS等文件比如: <link href="@Url.Co ...

  9. MVC小系列(十二)【RenderAction和RenderPartial区别】

    二者作用:RenderAction:渲染分部视图到页面上,要求提供Action和控制器名称RenderPartial:渲染分部视图到页面上,要求提供分部视图的名称,即路径,如果是在当前控制下或者sha ...

随机推荐

  1. (转载)完美解决PHP中文乱码问题

    (转载)http://www.souzz.net/html/edu/php/php1/74181.html 一.首先是PHP网页的编码 1.php文件本身的编码与网页的编码应匹配 a.如果欲使用gb2 ...

  2. [转]ASP.NET MVC 入门1、简介

    什么是MVC模式 MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Co ...

  3. FlexSlider插件的详细设置参数 http://www.woothemes.com/flexslider/

    http://www.woothemes.com/flexslider/ FlexSlider插件的详细设置参数 $(window).load(function() { $('.flexslider' ...

  4. CentOS下恢复Firefox的复制等功能

    在CentOS下使用firefox编辑博客时,我发现无法使用复制粘帖功能,可用如下两种方法恢复(方法一已验证可行): 方法一: 找到user.js所在的目录,Linux下的user.js所在目录为Un ...

  5. IT应聘者的简历应该是怎么样的?

    从去年到现在看了几百份简历,包括产品运营和产品设计师的职位.我不是 HR,只是想直接看到求职者的状况,看看是不是要换更准确的渠道去招聘对的人.我看简历的目的也很简单:找到没有什么问题且可能合适的人,然 ...

  6. SVN eclipse插件错误

    部分文章转载自:http://www.bkjia.com/ASPjc/1015687.html 出现如下问题该怎么做: 1.在Windows--Preferences--Team--SVN--接口换成 ...

  7. cocos2d-x 的CCObject与autorelease 之深入分析

    转自: http://blog.csdn.net/honghaier/article/details/8160519 CCObject.h: #ifndef __CCOBJECT_H__ #defin ...

  8. GROUP BY,WHERE,HAVING之间的差别和使用方法

    having子句与where有类似之处但也有差别,都是设定条件的语句.在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先运行.而where子句在查询过程中运行优 ...

  9. iOS开发多线程篇---atomic nonatomic区别

    摘要 atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操 作.atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么 ...

  10. Java 向Hbase表插入数据报(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac)

    org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac 代码: //1.create HTa ...