c# - route - tag helpers asp net core
¿Dónde está Request.IsAjaxRequest() en Asp.Net Core MVC? (2)
Para aprender más sobre el nuevo y emocionante framework Asp.Net-5, estoy tratando de crear una aplicación web usando el recientemente lanzado Visual Studio 2015 CTP-6.
La mayoría de las cosas parecen muy prometedoras, pero parece que no puedo encontrar Request.IsAjaxRequest (), una funcionalidad que he estado usando con bastante frecuencia en proyectos MVC más antiguos.
¿Hay una forma mejor de hacer esto? ¿Eso los hizo eliminar este método? ¿O está "oculto" en otro lugar?
¡Gracias por cualquier consejo sobre dónde encontrarlo o qué hacer en su lugar!
en asp.net core, puede usar Context.Request.Headers.
bool isAjaxCall = Context.Request.Headers["x-requested-with"]=="XMLHttpRequest"
Me confundí un poco, porque el título menciona MVC 5.
Buscar Ajax
en el repositorio MVC6 github no da ningún resultado relevante , pero puede agregar la extensión usted mismo. La descompilación del proyecto MVC5 da una pieza bastante simple de código:
/// <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;
}
Como el Controller
MVC6 parece estar utilizando Microsoft.AspNet.Http.HttpRequest , debe verificar la colección request.Headers
para el encabezado apropiado introduciendo algunos ajustes a la versión 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;
}
o directamente:
var isAjax = request.Headers["X-Requested-With"] == "XMLHttpRequest"