程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> asp.net mvc ActionResult,mvcactionresult

asp.net mvc ActionResult,mvcactionresult

編輯:關於.NET

asp.net mvc ActionResult,mvcactionresult


定義在Controller中的Action方法大都返回一個ActionResult對象。ActionResult是對Action執行結果的封裝,用於最終對請求進行響應。ASP.NET MVC提供了一系列的ActionResult。

1. ActionResult對請求的響應

HTTP是一個單純的采用請求/回復消息交換模式的網絡協議,Web服務器在接收並處理來自客戶端的請求後會根據處理結果對請求予以響應。對於來自客戶端的訪問請求,最終的處理體現在針對目標Action方法的執行,我們可以在定義Action方法的時候人為地控制對請求的響應。如果下面的代碼片斷所示,抽象類Controller具有一個只讀的Response屬性表示當前的HttpResponse,我們可以直接利用它來實現對請求的響應。我們也可以間接地通過表示當前HTTP上下文的HttpContext屬性和表示Controller上下文的ControllerContext屬性來獲取用於響應請求的HttpResponse對象。

 1 public abstract class Controller : ControllerBase, ...
 2    {
 3        //其他成員
 4        public HttpResponseBase Response { get; }
 5        public HttpContextBase HttpContext { get; }
 6    }
 7     
 8    public abstract class ControllerBase : IController
 9    {
10        //其他成員
11        public ControllerContext ControllerContext { get; set; }
12    }

原則上講,我們可以利用HttpResponse對請求響應作百分之一百地控制,但是我們一般並不這麼做,而是將針對請求的響應實現在一個ActionResult對象中。如下面的代碼片斷所示,ActionResult是一個抽象類型,最終的請求響應實現在抽象方法ExecuteResult方法中。

1 public abstract class ActionResult
2 {    
3     //其他成員
4     public abstract void ExecuteResult(ControllerContext context);
5 }

顧名思義,ActionResult就是執行Action的結果。ActionInvoker在完成對Action方法的執行後,如果返回一個ActionResult對象,ActionInvoker會將當前Controller上下文作為參數調用其ExecuteResult方法。View的最終呈現是通過ActionResult的子類ViewResult來完成的,除了ViewResult,ASP.NET MVC還為我們定義了額外一些具體的ActionResult。

1.1 ActionResult 類是操作結果的基類。下面是其相關的繼承層次結構:

1.2 對應的輔助方法:

2. Result的相應示例

2.1 Content():返回ContentResult

public ContentResult ContentResult()
        {
            return Content("123");
        }

2.2 Json():返回JsonResult

Json方法能返回一個JsonResult,此方法會把response.ContentType = "application/json"。默認情況下這種方式只支持post請求,若想允許get請求可以使用重載方法。

1 public JsonResult JsonResult()
2         {
3             var obj = new { id="123",name="rj"};
4 
5             return Json(obj, JsonRequestBehavior.AllowGet);
6         }

2.3 JavaScript():返回JavaScriptResult

JavaScript方法實例化一個JavaScriptResult,JavaScriptResult只是簡單的設置response.ContentType = "application/x-javascript";

1 public JavaScriptResult JavaScriptResult()
2         {
3             return JavaScript("alert('123');");
4         }

2.4 File():返回二進制數據或文件

1 public FilePathResult FilePathResult()
2         {
3             string filename = Server.MapPath("/Image/622762d09a82581ea1ec9c77.jpg");
4             return File(filename, "image/jpeg");
5         }

2.5 其他類型

PartialView()和View():分別返回PartialViewResult和ViewResult

返回局部視圖

Redirect():返回RedirectResult

重定向

RedirectToAction(),RedirectToRoute():返回RedirectToRouteResult

RedirectToRouteResult同樣是產生跳轉的結果,但是它具有“路由表遍歷能力”,也就是具有Url outbound的特點

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved