原文:返璞归真 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的更多相关文章

  1. 返璞归真 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 新 ...

  2. 返璞归真 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 ...

  3. 返璞归真 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 ...

  4. 返璞归真 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 上传文件, ...

  5. 返璞归真 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 ...

  6. 返璞归真 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 ...

  7. 返璞归真 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 新特性 ...

  8. asp.net mvc 4.0 新特性之移动特性

    asp.net mvc 4.0 新特性之移动特性 为不同的客户端提供不同的视图 手动重写 UserAgent,从而强制使用对应的视图 示例1.演示如何为不同的客户端提供不同的视图Global.asax ...

  9. ASP.NET4.0新特性

    原文:ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音 ...

随机推荐

  1. 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 ...

  2. 1.SQL统计某张表的列数。

    select   count(syscolumns.name)    from   syscolumns   ,   sysobjects       where   syscolumns.id    ...

  3. Web工程师的工具箱 | 酷壳 - CoolShell.cn

    Web工程师的工具箱 | 酷壳 - CoolShell.cn Web工程师的工具箱 2012年12月19日 陈皓 发表评论 阅读评论 30,168 人阅读     本文出自Ivan Zuzak 的&l ...

  4. 点滴的积累---J2SE学习小结

    点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...

  5. Wix打包系列(一)如何使用wix制作安装程序

    原文:Wix打包系列(一)如何使用wix制作安装程序 最近由于项目需要,需要给客户制作安装程序,一开始使用vs2005自带的打包工程来打包,但用了一段时间发现vs打包太死板,而且使用起来问题很多.收费 ...

  6. 使用Spring的JAVA Mail支持简化邮件发送(转)

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是Mail ...

  7. python实用小代码

    栈的实现 #!/usr/bin/env python #coding=utf-8 #python version 2.7.4 class stack: def __init__(self,list=N ...

  8. C++内存管理学习笔记(7)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  9. MySQLdb 连接Mysql 数据库出错解决

      #coding=utf-8 import MySQLdb if __name__ == "__main__": db = MySQLdb.connect(host=<sp ...

  10. poj2378(树的dfs)

    题目链接:http://poj.org/problem?id=2378 题意:给一个树状图,有n个点.求出,去掉哪个点,使得剩下的每个连通子图中点的数量不超过n/2. 分析:num[u]表示以u为根节 ...