ASP.NET MVCアクションのコントローラはAjaxリクエストを受け付けます。ASP.NET MVCアクションのコントローラはAjaxリクエストを受け付けます。

ASP.NET MVCアクションのコントローラはAjaxリクエストを受け付けます。

 

まず、平均的なWeb要求とAJAX要求は、基本的にすべてのHTTPリクエストと同じです。理論的にサーバは、要求がAJAXリクエストはありませんが、タイトルが言われているので、それは間違いなく行うための方法である時間を区別することができません。

要求パケットのAJAX要求では、多くの場合、含まれている:X-要求-付=のXMLHttpRequest

これはまた、そうする主要なJavaScriptのフレームワークです。

そして、サーバはこの時点に応じて決定することができ、時間の要求は、Ajaxリクエストです。

ASP.NET MVCでは、この方法は、拡張子があります。

コードをコピー
System.Web.Mvc名前空間1。
 2 { 
 3 //概要:
 4 //はSystem.Web.HttpRequestBaseに基づいてクラスが追加された機能は、HTTPリクエストAJAXリクエストか否かが判定された、拡張され表します。
 パブリック静的クラスAjaxRequestExtensions 5。
 6 { 
 7 //要約:
 8 // HTTPリクエストは、指定されたAJAXリクエストかどうかを決定します。
 9つの// 
10 //パラメータ:
。リクエスト@ 11:
12は、HTTPリクエスト//です。
13の// 
14の//戻り値:
15 //指定されたHTTPリクエストがtrueの場合、AJAX要求であれば、そうでない場合はfalse。
16 // 
17 //例外:
18 System.ArgumentNullExceptionの@である:
19 //リクエストパラメータが(何のためのVisual Basicで)nullです。
20パブリック静的ブールIsAjaxRequest(このHttpRequestBaseリクエスト)。
21} 
22}
コードをコピー

しかし、その後、これが唯一のアクションが肥大化すること、内部的にアクションを呼び出すことができるかどうか、AJAX要求の結果として内部的にアクションを返す必要があります。

HTTPGETマークとして、場合、方法HttpPostラベルが良くやるのが好き。

得られた情報へのアクセスは、そうするために、我々は一つの属性、および抽象クラスActionMethodSelectorAttributeから継承されたこの属性を記述する必要があります。

そして、扱いやすいです。コードは以下の通りであります:

コードをコピー
System.Web.Mvc名前空間1 
 2 { 
 3 /// <まとめ> 
 4 ///特性、AJAXリクエストを処理するだけで操作方法を、制限するための特性です。
 。/// 5 </要約> 
 6 [AttributeUsage(AttributeTargets.Method、AllowMultiple = false trueに、継承=へ)]。
 7密閉パブリッククラスAjaxRequestAttribute:ActionMethodSelectorAttribute 
 8 { 
 9 /// <まとめ> 
新しいクラス10 ///初期化AjaxRequestAttributeインスタンス。
。/// 11 </要約> 
12はパブリックAjaxRequestAttribute(IS)
13は、この(真の)
14 { 
15} 
16 
。17 /// <まとめ> 
クラス18 /// AjaxRequestAttribute初期の新しいインスタンス。
19 /// </要約>
20 /// <PARAM NAME = "isAjaxRequest "> AJAX要求するかどうか操作方法を制限します。</ PARAM> 
21公共AjaxRequestAttribute(BOOL IsAjaxRequest)である
22は{ 
23 IsAjaxRequest = IsAjaxRequestであり; 
24} 
25 
26 /// <まとめ>は
AJAX要求するかどうかを示す27 ///操作方法。
/// 28 </要約> 
29 IsAjaxRequest公共BOOL 
30 { 
; 31がGETである
32プライベートSET; 
33である} 
34が
35 /// <まとめ> 
36 /// AJAXリクエストコンテキスト決意動作方法は、指定された制御のために有効です。
/// 37 [</要約> 
38 /// <PARAM NAME = "ControllerContext">コントローラコンテキストです。</ param>の
39 ///ます。<param name = "METHODINFO "> 操作方法についての情報。</ param>の
40 /// <戻り値>、有効な真指定されたコンテキストの要求の動作制御方法であれば、そうでない場合はfalse。</戻り> 
41オーバーライド公共BOOL IsValidForRequest(ControllerContext ControllerContext、System.Reflection.MethodInfo METHODINFO)されている
42が、{ある
(ControllerContext == NULL)IF 43である
44は、{ある
新しい新規( "ControllerContext")例外ArgumentNullException 45スロー; 
46}である
47 
48 = BOOL IsAjaxRequest ControllerContext .HttpContext.Request.IsAjaxRequest(); 
49 ==リターンIsAjaxRequest IsAjaxRequest; 
50} 
51である} 
52}であります
コードをコピー

PS:名前空間の実用化は、1日プラスMVCチームは本当にそのような属性が、それは間違いをコンパイルする場合は、(システムライブラリや、一般的なサードパーティ製のライブラリ一致して)そうすることは推奨されません。ここではデモンストレーションのためだけに、私はので、一時的なスペースの良い名前を考えることはできません。-_- |||

だから、限り、コンストラクタの引数が真であるか、引数なしのコンストラクタを呼び出し、その要求がAJAX要求しなければならない場合はアクションの属性は、マークされて。コンストラクタの引数がfalseの場合、それは、AJAX要求ではありません。

上記の条件が満たされない場合は、見つからない404が返されます。

まず、平均的なWeb要求とAJAX要求は、基本的にすべてのHTTPリクエストと同じです。理論的にサーバは、要求がAJAXリクエストはありませんが、タイトルが言われているので、それは間違いなく行うための方法である時間を区別することができません。

要求パケットのAJAX要求では、多くの場合、含まれている:X-要求-付=のXMLHttpRequest

これはまた、そうする主要なJavaScriptのフレームワークです。

そして、サーバはこの時点に応じて決定することができ、時間の要求は、Ajaxリクエストです。

ASP.NET MVCでは、この方法は、拡張子があります。

コードをコピー
System.Web.Mvc名前空間1。
 2 { 
 3 //概要:
 4 //はSystem.Web.HttpRequestBaseに基づいてクラスが追加された機能は、HTTPリクエストAJAXリクエストか否かが判定された、拡張され表します。
 パブリック静的クラスAjaxRequestExtensions 5。
 6 { 
 7 //要約:
 8 // HTTPリクエストは、指定されたAJAXリクエストかどうかを決定します。
 9つの// 
10 //パラメータ:
。リクエスト@ 11:
12は、HTTPリクエスト//です。
13の// 
14の//戻り値:
15 //指定されたHTTPリクエストがtrueの場合、AJAX要求であれば、そうでない場合はfalse。
16 // 
17 //異常:
18 // System.ArgumentNullException:
19 //リクエストパラメータが(何のためのVisual Basicで)nullです。
20パブリック静的ブールIsAjaxRequest(このHttpRequestBaseリクエスト)。
21} 
22}
コードをコピー

しかし、その後、これが唯一のアクションが肥大化すること、内部的にアクションを呼び出すことができるかどうか、AJAX要求の結果として内部的にアクションを返す必要があります。

HTTPGETマークとして、場合、方法HttpPostラベルが良くやるのが好き。

得られた情報へのアクセスは、そうするために、我々は一つの属性、および抽象クラスActionMethodSelectorAttributeから継承されたこの属性を記述する必要があります。

そして、扱いやすいです。コードは以下の通りであります:

コードをコピー
System.Web.Mvc名前空間1 
 2 { 
 3 /// <まとめ> 
 4 ///特性、AJAXリクエストを処理するだけで操作方法を、制限するための特性です。
 。/// 5 </要約> 
 6 [AttributeUsage(AttributeTargets.Method、AllowMultiple = false trueに、継承=へ)]。
 7密閉パブリッククラスAjaxRequestAttribute:ActionMethodSelectorAttribute 
 8 { 
 9 /// <まとめ> 
新しいクラス10 ///初期化AjaxRequestAttributeインスタンス。
。/// 11 </要約> 
12はパブリックAjaxRequestAttribute(IS)
13は、この(真の)
14 { 
15} 
16 
。17 /// <まとめ> 
クラス18 /// AjaxRequestAttribute初期の新しいインスタンス。
19 /// </要約>
20 /// <PARAM NAME = "isAjaxRequest "> AJAX要求するかどうか操作方法を制限します。</ PARAM> 
21公共AjaxRequestAttribute(BOOL IsAjaxRequest)である
22は{ 
23 IsAjaxRequest = IsAjaxRequestであり; 
24} 
25 
26 /// <まとめ>は
AJAX要求するかどうかを示す27 ///操作方法。
/// 28 </要約> 
29 IsAjaxRequest公共BOOL 
30 { 
; 31がGETである
32プライベートSET; 
33である} 
34が
35 /// <まとめ> 
36 /// AJAXリクエストコンテキスト決意動作方法は、指定された制御のために有効です。
/// 37 [</要約> 
38 /// <PARAM NAME = "ControllerContext">コントローラコンテキストです。</ param>の
39 ///ます。<param name = "METHODINFO "> 操作方法についての情報。</ param>の
40 /// <戻り値>、有効な真指定されたコンテキストの要求の動作制御方法であれば、そうでない場合はfalse。</戻り> 
41オーバーライド公共BOOL IsValidForRequest(ControllerContext ControllerContext、System.Reflection.MethodInfo METHODINFO)されている
42が、{ある
(ControllerContext == NULL)IF 43である
44は、{ある
新しい新規( "ControllerContext")例外ArgumentNullException 45スロー; 
46}である
47 
48 = BOOL IsAjaxRequest ControllerContext .HttpContext.Request.IsAjaxRequest(); 
49 ==リターンIsAjaxRequest IsAjaxRequest; 
50} 
51である} 
52}であります
コードをコピー

PS:名前空間の実用化は、1日プラスMVCチームは本当にそのような属性が、それは間違いをコンパイルする場合は、(システムライブラリや、一般的なサードパーティ製のライブラリ一致して)そうすることは推奨されません。ここではデモンストレーションのためだけに、私はので、一時的なスペースの良い名前を考えることはできません。-_- |||

だから、限り、コンストラクタの引数が真であるか、引数なしのコンストラクタを呼び出し、その要求がAJAX要求しなければならない場合はアクションの属性は、マークされて。コンストラクタの引数がfalseの場合、それは、AJAX要求ではありません。

上記の条件が満たされない場合は、見つからない404が返されます。

おすすめ

転載: www.cnblogs.com/Jeely/p/10951296.html
おすすめ