返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller
2014-03-09 17:43
543 查看
原文:返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller[索引页]
[源码下载]
[align=center]返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller[/align]
作者: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)
Web.config
ControllerDemoController.cs
GlobalActionFilter.cshtml(访问此页会抛出异常,然后跳转到Error2)
Error2.cshtml(自定义错误页)
2、标记为 ChildActionOnly 的 Action 支持 OutputCache
ControllerDemoController.cs
_GetCurrentTime.cshtml
ChildActionOnlyDemo.cshtml
3、 新增了 ViewBag
ControllerDemoController.cs
ViewBagDemo.cshtml
4、 新增的 Action Result
OK
[源码下载]
[源码下载]
[align=center]返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller[/align]
作者: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 = 0; // 将 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 = 5)] 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 3.0 新特性之Controller
- ASP.NET MVC 3.0 新特性之Controller
- 返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model
- 返璞归真 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 (8) - asp.net mvc 3.0 新特性之 Model
- ASP.NET MVC 3.0 新特性之Controller
- 返璞归真 asp.net mvc (3) - Controller/Action
- 我要学ASP.NET MVC 3.0(五): 入手Controller/Action
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
- Asp.net mvc 3.0新特性-浅析1
- 返璞归真asp.net mvc 1.0(3) - Controller/Action【转】
- Asp.net mvc 3.0新特性-浅析1
- Asp.net Mvc Codeplex Preview 5 第二篇 Controller&Filter的新特性
- ASP.NET MVC 3.0(五): 入手Controller/Action
- Asp.net mvc 3.0入门教程之二------控制器Controller
- 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性
- asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比
- ASP.NET MVC 3.0 新特性之Model