日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)

發布時間:2024/4/15 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文參考:http://www.cnblogs.com/willick/p/3331521.html

1、繼承IController接口,示例代碼將當前請求的Controller和Action打印到瀏覽器:

public class BasicController : IController {public void Execute(RequestContext requestContext) {string controller = (string)requestContext.RouteData.Values["controller"];string action = (string)requestContext.RouteData.Values["action"];requestContext.HttpContext.Response.Write(string.Format("Controller: {0}, Action: {1}", controller, action));} }

? ? ?稍微復雜一點的系統,繼承IController是需要做許多工作的,不建議直接繼承IController接口。

2、MVC 框架的 System.Web.Mvc.Controller 類,提供了足夠實用的特性來方便我們對請求的處理和返回結果。它提供了一下幾個關鍵的特性:

  • Action方法:一個 Controller,它的行為被分為多個方法,通常一個方法對應著一個請求,并且可以通過方法參數來取得請求傳遞過來的數據。
  • ActionResult:可以返回一個描述了 Action 方法執行結果的對象,這樣的好處是想返回什么結果就指定對應的返回對象就行,不用關心怎么去執行并生成結果。
  • Filters:通過C#特性,對某一種行為的處理(比如授權和驗證)進行封裝,方便了在多個 Controller 和 Action 方法之間進行重用。

3、從Controller中獲取數據有以下三種主要來源:

  • 一系列的上下文對象。

? ? ?最常見的上下文對象如下圖所示:

? ? ?

  • 傳遞給 Action 方法的參數。

Controller 類通過 MVC 框架的 value providermodel binder 組件來為 Action 方法獲取參數的值。value provider 提供了一系列Controller中可以訪問到的值,在內部它通過從 Request.Form、Request.QueryString、Request.Files 和?RouteData.Values 等上下文對象中提取數據(鍵值集合),然后把數據傳遞給 model binder,model binder試圖將這些數據與Action方法的參數進行匹配。默認的 model binder 可以創建和賦值給任何.NET類型對象參數(即 Action 方法的參數),包括集合和自定義的類型。

  • 顯式的調用框架的模型綁定(Model Binding)特性。

?4、ActionResult是描述 Action 方法執行結果的對象,它的好處是想返回什么結果就指定對應的返回對象就行,不用關心如何使用Response對象來組織和生成結果。ActionResult 是一個命令模式的例子,這種模式通過存儲和傳遞對象來描述操作。當 MVC 框架從 Action 方法中接收到一個 ActionResult 對象,它調用這個對象的 ExecuteResult 方法,其內部是通過 Response 對象來返回我們想要的輸出結果。?MVC框架包含了許多 ActionResult 類型,這些類型都繼承自 ActionResult 類,大部分在 Controller 類中都有簡便的方法:

? ??

? ? ?除了該表列出來的,還有ContentResult、FileResultJsonResult?和?JavaScriptResult。

5、從Action傳遞數據到View中的幾種方式:

  • View Model對象:
//Action中 public ViewResult Index() { DateTime date = DateTime.Now; return View(date); } //View中獲取 @model DateTime @{ ViewBag.Title = "Index"; }<h2>Index</h2> The day is: @Model.DayOfWeek
  • ViewBag,是一個動態(dynamic)的弱類型,在程序運行的時候解析,是 MVC3 中新增的特性,只在當前View有效。
  • ViewData,是一個字典集合,也是只在當前View有效,性能比 ViewBag 高,但是使用的時候需要類型轉換。
  • TempData,也是字典集合,一般用于兩個請求之間臨時緩存內容或頁面間傳遞消息,保存在 Session 中,使用完以后則從 Session 中被清除。

? ?一般在當前 View 中使用 ViewBag 或 ViewData,在兩個請求之間傳遞臨時數據用 TempData。由于 TempData 被使用后即被釋放,所以如果要二次使用 TempData 中的數據就需要將其存到其他變量中。

轉載于:https://www.cnblogs.com/wangwust/p/6386849.html

總結

以上是生活随笔為你收集整理的【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。