Mariyan Marinov
Mariyan Marinov

Reputation: 45

Request.IsAjaxRequest() alternative in MVC6

I am trying to run this example Rendering Partial Views using ajax, but i got the following compilation error:

'HttpRequest' does not contain a definition for 'IsAjaxRequest' and no extension method 'IsAjaxRequest' accepting a first argument of type 'HttpRequest' could be found.

    public ActionResult ItemsList(string ID)
    {
        Item item = Service.GetItemById(ID);

        if (Request.IsAjaxRequest())
        {
            return PartialView("viewPath", item);
        }
        else
        {
            return View("viewPath", item);
        }
    }

Upvotes: 2

Views: 1930

Answers (2)

Brian
Brian

Reputation: 435

Ricardo Peres's answer works for ajax requests but misses the new Fetch types. This works for me:

internal static class RequestHelpers
{
    internal static bool IsAjaxRequest(this HttpRequest request)
    {
        return string.Equals(request.Query["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal) ||
            string.Equals(request.Headers["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal) ||
            string.Equals(request.Headers["X-Requested-With"], "Fetch", StringComparison.Ordinal);
    }
}

Upvotes: 2

Ricardo Peres
Ricardo Peres

Reputation: 14555

Check the user agent, as this:

var isAjax = Request.Headers["X-Requested-With"] == "XMLHttpRequest";

Upvotes: 3

Related Questions