Pour en savoir plus sur le nouveau cadre passionnant Asp.Net-5, j'essaie de créer une application Web à l'aide du nouveau Visual Studio 2015 CTP-6.
La plupart des choses semblent vraiment prometteuses, mais je n'arrive pas à trouver Request.IsAjaxRequest () - une fonctionnalité que j'utilise assez fréquemment sur les anciens projets MVC.
Y a-t-il une meilleure façon de faire cela - qui leur a fait supprimer cette méthode - ou est-ce "caché" ailleurs?
Merci pour tout conseil sur où le trouver ou quoi faire à la place!
Je suis devenu un peu confus, car le titre mentionnait MVC 5.
Recherchez Ajax
dans le repo MVC6 github ne donne aucun résultat pertinent , mais vous pouvez ajouter l'extension vous-même. La décompilation du projet MVC5 donne un morceau de code assez simple:
/// <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;
}
Étant donné que MVC6 Controller
semble utiliser Microsoft.AspNet.Http.HttpRequest , vous devez vérifier request.Headers
collection pour l'en-tête approprié en introduisant quelques ajustements à la version 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;
}
ou directement:
var isAjax = request.Headers["X-Requested-With"] == "XMLHttpRequest"
dans le noyau asp.net, vous pouvez utiliser Context.Request.Headers.
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"