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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

精通ASP.NET MVC——控制器和动作

發布時間:2025/3/11 asp.net 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精通ASP.NET MVC——控制器和动作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在MVC框架中,控制器必須實現System.Web.Mvc命名空間的IController接口,如下圖所示:

//// 摘要:// 定義控制器所需的方法。public interface IController{//// 摘要:// 執行指定的請求上下文。//// 參數:// requestContext:// 請求上下文。void Execute(RequestContext requestContext);}

這是一個很簡單的接口。唯一的方法Excute,在請求以控制器為目標時被調用。但是發揮著重要的作用。?在Controller文件夾中創建一個新的名為“BasicController”的類文件,如下圖所示:

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

IController接口的Execute方法被傳遞給System.Web.Routing.RequestContext對象,它提供關于請求和匹配路由的信息,如下圖所示:?

RequestContext類定義的屬性
名稱描述
HttpContext返回一個描述當前請求的 HttpContextBase 對象
RouteData返回一個描述匹配請求的路由的RouteData對象

HttpContextBase對象對一組描述當前請求的對象提供訪問。RouteData對象描述了路由,下圖描述了RouteData屬性:

RouteData類定義的屬性
名稱描述
Route返回匹配路由的RouteBase實現
RouteHandler返回處理路由的IRouteHandler
Values返回按名稱索引的片段值的集合

運行效果如下圖所示:?

? ? ? ? ? ?


接受請求數據:?

控制器經常需要訪問來自于輸入的請求的數據,如查詢字符串值,表單值,以及由路由系統根據輸入URL解析所得到得到參數。訪問這些數據有三個主要途徑:

1、通過一組上下文對象進行提取。

2、作為參數被傳遞給動作方法而形成的的數據。

3、明確地調用框架的模型綁定特性。

?

當控制器通過Controller基類派生而來的時候,使得到了一組便利屬性,可以用來訪問與請求相關的信息。這些便利屬性包括Request,Reponse,RouteData、HttpContext,以及Server。每一個屬性都包括了請求不同方面的信息,是因為每一個都是從請求的ControllerContext實例接受了不同類型的數據。這些屬性統稱為“便利屬性”如下圖所示:

?

常用的上下文對象
屬性類型描述
Request.QueryStringNameValueCollection隨該請求發送的GET變量
Request.FormNameValueCollention隨該請求發送的POST變量
Request.CookiesHttpCookieCollection由瀏覽器隨該請求發送的Cookies
Request.HttpMethodsting用于該請求的HTTP方法(動詞,如GET或者POST)
Request.HeadersNameValueCollection隨該請求發送的整個HTTP報頭
Request.UrlUrl所請求的URL
Request.UserHostAddressstring形成該請求的用戶IP地址
Request.RouteRouteBase為該請求所選擇的RouteTable.Routes條目
RouteData.ValuesRouteValueDictionary當前路由的參數(從URL或默認值提取)
HttpContext.ApplicationHttpApplicationStateBase應用程序狀態庫
HttpContext.CacheCache應用程序緩存庫
HttpContext.ItemsIDictionary當前請求的狀態庫
HttpContext.SessionHttpSessionStateBase訪問者會話狀態庫
UserIPrincipal已登錄用戶的認證信息
TempDataTempDataDictionary為當前用戶存儲的臨時數據項

?


動作結果?

MVC框架通過使用動作結果(Action Result)把指明意圖執行意圖分離開來。一般都是返回一個派生與ActionResult類的對象,它描述控制器相應應該要完成的功能。例如,渲染一個視圖,重定向到另一個URL或 動作方法等,在動作方法被執行后,創建MVC框架處理的ActionResult對象以產生結果。MVC框架有許多內建的動作結果類型,如下圖所示:

內建的ActionResult
類型描述輔助器方法
ViewResult返回指定的或默認的視圖模板View
PartialViewResult返回指定的或默認的分部視圖模板PartialView
RedireToRouteResult將HTTP 301或者302重定向發給一個動作方法或特定的路由條目,根據路由配置生成一個URL

RedirectToAction

RedirectToActionPermanent

RedirectToRoute

RedirectToRoutePermanent

RedirectResult將HTTP301或302重定向發送給一個特定的URLRedirect RedirectPermanent
ContentResult返回原始的文本數據給瀏覽器,隨意設置文本類型頭部Content
FileResult將二進制(例如,磁盤文件或內存字節數組)直接傳送給瀏覽器File
JsonResult將一個.NET對象序列化成JSON格式,發送給響應Json
JavaScriptResult發送一個由瀏覽器執行的JavaScript源代碼偏度JavaScript
HttpUnauthorizedResult將響應的HTTP狀態碼設置為401(意味“未授權”),這會引發當前的認證機制(表單認證或Windows認證)要求訪問者進行登錄None
HttpNotFoundResult返回一個HTTP的“404——未找到”錯誤HttpNotFount
HttpStatusCodeResult返回一個指定的HTTP碼None
EmptyResult什么也不做None

?

?

?

總結

以上是生活随笔為你收集整理的精通ASP.NET MVC——控制器和动作的全部內容,希望文章能夠幫你解決所遇到的問題。

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