新しいエキサイティングなAsp.Net-5フレームワークの詳細については、新しくリリースされたVisual Studio 2015 CTP-6を使用してWebアプリケーションを構築しようとしています。
ほとんどのものは本当に有望に見えますが、Request.IsAjaxRequest()-古いMVCプロジェクトで非常に頻繁に使用している機能が見つかりません。
これを行うためのより良い方法はありますか?それは彼らにこのメソッドを削除させましたか?それは他のどこかに「隠されています」か?
どこでそれを見つけるか、代わりに何をすべきかについてのアドバイスをありがとう!
タイトルにMVC 5が記載されていたため、少し混乱しました。
MVC6 githubリポジトリのAjax
で関連する結果が得られない を検索しますが、自分で拡張機能を追加できます。 MVC5プロジェクトからの逆コンパイルにより、非常に簡単なコードが得られます。
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
///
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequestBase request)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
if (request["X-Requested-With"] == "XMLHttpRequest")
return true;
if (request.Headers != null)
return request.Headers["X-Requested-With"] == "XMLHttpRequest";
return false;
}
MVC6 Controller
は Microsoft.AspNet.Http.HttpRequest を使用しているようであるため、チェックする必要があります request.Headers
コレクション MVC5バージョンにいくつかの調整を導入することにより、適切なヘッダーを作成します。
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
///
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequest request)
{
if (request == null)
throw new ArgumentNullException("request");
if (request.Headers != null)
return request.Headers["X-Requested-With"] == "XMLHttpRequest";
return false;
}
または直接:
var isAjax = request.Headers["X-Requested-With"] == "XMLHttpRequest"
asp.netコアでは、Context.Request.Headersを使用できます。
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"