簡體   English   中英

ASP.NET MVC ExecuteResult與ActionResult

[英]ASP.NET MVC ExecuteResult vs ActionResult

我看到它用於向響應添加標頭,然后返回一個文件用於流式傳輸。

public override void ExecuteResult(ControllerContext context)
{
    ...
        response.AddHeader("Accept-Ranges", "bytes");
        response.AddHeader("Content-Length", responseLength.ToString());
        response.Cache.SetCacheability(HttpCacheability.Public); //required for etag output
        response.Cache.SetETag(etag); //required for IE9 resumable downloads
        response.ContentType = blockBlob.Properties.ContentType;

        blockBlob.DownloadRangeToStream(response.OutputStream, startIndex, responseLength);
}

使用ExecuteResultActionResult什么區別,你會如何使它成為異步?

ExecuteResultActionResult上的抽象方法。 ActionResult是從ASP.NET MVC控制器返回的任何結果的基類,而不是C#中的內置數據類型。

如果您正在實現ExecuteResult那么它可能是結果的自定義實現。

本文檔頁面ActionResult.ExecuteResult文檔中對此進行了解釋,它說明如下:

(方法ExecuteResult)允許通過繼承自ActionResult類的自定義類型處理操作方法的結果。

ExecuteResultActionResult唯一的抽象方法。 在action方法返回之后,MVC框架執行此方法以生成到瀏覽器的輸出。

namespace System.Web.Mvc
{
    public abstract class ActionResult
    {
        public abstract void ExecuteResult(ControllerContext context);
    }
}

所以,兩者之間沒有區別 - 返回任何ActionResult子類告訴MVC框架在該類上執行ExecuteResult方法。

如果使用MVC 5,則無法運行Async。 但是, MVC Core ActionResult包含ExecuteResultAsync方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM