2016-05-20 4 views
2

これは、ヘッダーをレスポンスに追加してストリーミングするためにファイルを返すのに使用されています。ASP.NET MVC ExecuteResult対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、あなたはそれ非同期どのようになるだろうを使用しての違いは何ですか?

答えて

2

ExecuteResultActionResultという唯一の抽象的な方法です。このメソッドは、アクションメソッドがブラウザに出力を生成するために戻った後、MVCフレームワークによって実行されます。

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

だから、文字通り両者の差がない - 任意ActionResultサブクラスを返すと、そのクラスにExecuteResult方法を実行するようにMVCフレームワークを伝えます。

MVC 5を使用している場合、非同期に実行する方法はありません。しかし、MVC Core ActionResult classにはExecuteResultAsyncメソッドが含まれています。

2

ExecuteResultは、ActionResultの抽象メソッドです。 ActionResultは、ASP.NET MVCコントローラから返された結果(C#内の組み込みデータ型以外)の基本クラスです。

ExecuteResultを実装している場合は、おそらく結果のカスタム実装です。これはthis documentation pageActionResult.ExecuteResultドキュメント内で説明されて

、それは次の言葉:

(方法ExecuteResultは)のActionResultクラスを継承するカスタム型によって、アクションメソッドの結果の処理を有効にします。

+0

"ExecuteResultを実装している場合は、おそらく結果のカスタム実装です。"これが重要なポイントです。 –

関連する問題