返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller
原文:返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller
作者:webabcd
介绍
asp.net mvc 之 asp.net mvc 3.0 新特性之 Controller:
- Global Action Filter
- 可以在标记为 ChildActionOnly 的 Action 上使用 OutputCache
- ViewBag
- 新增了一些 Action Result
示例
1、Global Action Filter 的 Demo
Global.asax.cs(注册全局的 Action Filter)
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- RegisterRoutes(RouteTable.Routes);
- /*
- * 演示 Global Action Filter
- */
- // 实例化一个 Filter
- var handleError = new HandleErrorAttribute();
- // 指定 HandleErrorAttribute 的 View
- handleError.View = "Error2";
- // Order 属性的默认值为:-1,即不会被应用,所以这里要修改一下
- handleError.Order = ;
- // 将 Filter 对象添加到全局 Filters 集合中
- GlobalFilters.Filters.Add(handleError);
- }
Web.config
- <system.web>
- <!--
- 如果需要启用 HandleError ,那么要在 web.config 中做如下配置:<customErrors mode="On" />
- -->
- <customErrors mode="On" />
- </system.web>
ControllerDemoController.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace MVC30.Controllers
- {
- public class ControllerDemoController : Controller
- {
- // 用于演示 Global Action Filter
- public ActionResult GlobalActionFilter()
- {
- throw new Exception("exception");
- }
- }
- }
GlobalActionFilter.cshtml(访问此页会抛出异常,然后跳转到Error2)
- @{
- ViewBag.Title = "Global Action Filter";
- }
- <h2>GlobalActionFilter</h2>
Error2.cshtml(自定义错误页)
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>Error</title>
- </head>
- <body>
- <!--
- HTTP 返回 500 时,页面必须输出足够多的信息才会显示,否则只会显示 IE 的 HTTP 500 默认页
- -->
- <h2>
- Sorry, an error occurred while processing your request
- </h2>
- <h2>
- Sorry, an error occurred while processing your request
- </h2>
- <h2>
- Sorry, an error occurred while processing your request
- </h2>
- <h2>
- Sorry, an error occurred while processing your request
- </h2>
- <h2>
- Sorry, an error occurred while processing your request
- </h2>
- </body>
- </html>
2、标记为 ChildActionOnly 的 Action 支持 OutputCache
ControllerDemoController.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace MVC30.Controllers
- {
- public class ControllerDemoController : Controller
- {
- public ActionResult ChildActionOnlyDemo()
- {
- return View();
- }
- // ChildActionOnly - 指定 Action 只能让 RenderAction 调用
- // OutputCache() - 缓存。Duration - 缓存秒数。VaryByParam - none, *, 多个参数用逗号隔开。也可以通过配置文件对缓存做设置
- [ChildActionOnly]
- [OutputCache(Duration = )]
- public PartialViewResult _GetCurrentTime()
- {
- var currentTime = DateTime.Now;
- return PartialView(currentTime);
- }
- }
- }
_GetCurrentTime.cshtml
- @*
- 通过 @model 指定 Model 的类型,同时 Model 对象就是 Action 返回的数据
- *@
- @model DateTime
- <div>
- currentTime: @Model.ToString("yyyy-MM-dd HH:mm:ss")
- </div>
ChildActionOnlyDemo.cshtml
- @{
- ViewBag.Title = "可以在标记为 ChildActionOnly 的 Action 上使用 OutputCache";
- }
- <h2>ChildActionOnlyDemo</h2>
- <div>
- @{ Html.RenderAction("_GetCurrentTime"); }
- <!--
- <% Html.RenderAction("_GetCurrentTime"); %>
- -->
- </div>
- <div>
- @Html.Action("_GetCurrentTime")
- <!--
- <%= Html.Action("_GetCurrentTime") %>
- -->
- </div>
- <!--
- Html.Action 与 Html.RenderAction 的区别:
- Html.Action - 直接将 Action 的结果作为一个字符串输出
- Html.RenderAction - 将 Action 作为一个用户控件嵌入到当前的 HttpContext 中
- -->
3、 新增了 ViewBag
ControllerDemoController.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace MVC30.Controllers
- {
- public class ControllerDemoController : Controller
- {
- // 用于 ViewBagDemo
- public ActionResult ViewBagDemo()
- {
- // ViewBag 的本质就是把 ViewData 包装成为 dynamic 类型
- ViewBag.Message = "ViewBag 的 Demo";
- return View();
- }
- }
- }
ViewBagDemo.cshtml
- @{
- ViewBag.Title = "ViewBag";
- }
- <h2>ViewBag</h2>
- Message: @ViewBag.Message
4、 新增的 Action Result
- <p>
- Controller 中新增了一些 Action Result: HttpNotFoundResult, HttpRedirectResult, HttpStatusCodeResult
- </p>
OK
[源码下载]
返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller的更多相关文章
- 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性
[索引页][源码下载] 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性 作者:webabcd 介绍asp.net mvc 之 asp.net mvc 5.0 新 ...
- 返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model
原文:返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model [索引页][源码下载] 返璞归真 asp.net mvc (8) - asp.net mvc ...
- 返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性
原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
- 返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor)
原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...
- 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
原文:返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API [索引页][源码下载] 返璞归真 asp.net mvc (10) - asp.net ...
- 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性
原文:返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 [索引页][源码下载] 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 ...
- asp.net mvc 4.0 新特性之移动特性
asp.net mvc 4.0 新特性之移动特性 为不同的客户端提供不同的视图 手动重写 UserAgent,从而强制使用对应的视图 示例1.演示如何为不同的客户端提供不同的视图Global.asax ...
- ASP.NET4.0新特性
原文:ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音 ...
随机推荐
- [置顶] 如何在Python IDLE中调试Python代码?
好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...
- 探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB
探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB 前言: 从Oracle 12c開始,引入了容器数据库的概念,能够实现数据库插拔操作,例如以下图: 如今我们 ...
- jsoncpp使用
第一个github网站下载jsoncpp最新的版本库:https://github.com/open-source-parsers/jsoncpp 点击右下角的Download ZIP进行下载 解压后 ...
- (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events & Raycasters
大家好,我是孙广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:mod=guide&view=m ...
- 单片机实验: 三轴磁场模块 GY-271
最近买了一块三轴磁场模块进行实验 名称:HMC5883L模块(三轴磁场模块) 型号:GY-271 使用芯片:HMC5883L 供电电源:3-5v 通信方式:IIC通信协议 测量范围:±1.3-8 高斯 ...
- SE 2014年5月25日
如图配置 两实验 R1模拟总部,R2 与R3模拟分部 实验一 要求使用 IPSec VPN 主模式,使得总部与两分部内网可相互通讯 步骤: 1. 配置默认路由 [RT1]ip route-stat ...
- jenkins 集成 redmine 账户验证的方案
jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...
- 添加PDF文件对照度的粗浅原理,及方法
上边这张照片不是异形,而是著名的鹦鹉螺.下边这张照片,是送给研究生同学的毕业纪念,向龙同学帮我激光雕刻的. 近期的照片在[http://www.douban.com/photos/album/13 ...
- orcl 删除重复的行
delete from FOODDETAIL t where t.id in (select t.id from FOODDETAIL where t.sendtime>=to_date(' ...
- pygame各个模块概述
在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用. 我们就说说pygame中的各个模块吧!!! #pygame modu ...