返璞归真 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日那天讲的,结果因为莫名其妙的原因导致没有语音 ...
随机推荐
- VSTO 向office文档中插入内容
原文:VSTO 向office文档中插入内容 Word: Word.Selection sec = ThisAddIn.appWord.Selection; sec.Insert ...
- A Game of Thrones(16) - Edard
“They’ve found her, my lord.” Ned rose quickly. “Our men or Lannister’s?” “It was Jory,” his steward ...
- BZOJ 刷题记录 PART 6
[BZOJ2709]水的二分加验证.可是好像被读入萎到了... [BZOJ3229]强大的算法见此.被机房的一堆大神"推荐".于是被坑了...写了一个下午... [BZOJ3631 ...
- poj2411(状压dp)
题目链接:http://poj.org/problem?id=2411 题意:由1*2 的矩形通过组合拼成大矩形,求拼成指定的大矩形有几种拼法. 分析:如果是横着的就定义11,如果竖着的定义为竖着的0 ...
- EF 打造冲不掉的标签
应用场景: 在用EF的Datebase Fitst模式开发时,实体都是有T4文件根据数据库来生成,并且是每次保存都会重新生成,如果我们在有T4生成的实体类上加上验证标签,那么以保存就会丢失, 解决方案 ...
- leetcode -day19 Convert Sorted List to Binary Search Tree
1. Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted ...
- linux--shell script
下面是最近学习shell script的一些知识点总结 ***博客园-邦邦酱好*** 1.介绍shell是一个文字接口,让我们与系统沟通.shell script就是针对shell所写的脚本.它就 ...
- JDBC数据库编程常用接口(转)
JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够 ...
- java获取当前日期时间代码总结
1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下: 要使用 java.util.Date .获取当前时间的代码如下 代码如下 复制代码 Date date = new ...
- freemarker导出word带图片
导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...