Подтвердить что ты не робот

Проверка Request.IsAjaxRequest всегда возвращает false внутри моего asp.net mvc4

У меня есть следующий код внутри моего контроллера

public ActionResult Index(string searchTerm=null)
        {   System.Threading.Thread.Sleep(5000);
            var accountdefinition = repository.FindAccountDefinition(searchTerm).ToList();
            if (Request.IsAjaxRequest())
            { return PartialView("_CustomerTable",accountdefinition); }
        return View(accountdefinition);         
        }

Но если я вызову вышеуказанный метод действия с помощью Ajax.beginform, тогда Request.IsAjaxRequest вернет false, и частичное представление не будет возвращено

@using (Ajax.BeginForm(
new AjaxOptions{
    HttpMethod= "get",
    InsertionMode=InsertionMode.Replace,
    LoadingElementId = "progress",
    UpdateTargetId="customerTable"}))
    {
<div style="float:right">Search <input placeholder="Search by name.." name="searchTerm" type="text"> <input class="btn btn-success" type="submit" value="search" /></div>               

}
<div id = "progress" class="loadingimage">
<img src="~/Content/Ajax-loader-bar.gif" />
</div>
4b9b3361

Ответ 1

Мне кажется, что я не включил jquery.unobtrusive-ajax.min.js

Ответ 2

Я столкнулся с этой проблемой и не был уверен, что черная магия делает файл jquery.unobtrusive-ajax.min.js, но для меня это не. Я был счастлив, когда столкнулся с этой сообщением, которая объясняет очень простую проблему.

Автор сообщения заявил, что есть заголовок, который необходимо заполнить.

X-Requested-With => 'XMLHttpRequest'

Для Angular пользователей, которые находят это сообщение, я включил фрагмент сверху post.

var productsApp = angular.module('productsApp', []);

productsApp.config(['$httpProvider', function ($httpProvider) {
  $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);

Ответ 3

Привет, попробуйте это и измените свое мнение так, как будто это сработает для вас.

 @using (Ajax.BeginForm("Index", "controller", null, new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.Replace, LoadingElementId = "progress", UpdateTargetId = "customerTable" }))
        {
            <div style="float: right">
                Search
                <input placeholder="Search by name.." name="searchTerm" type="text">
                <input class="btn btn-success" type="submit" value="search" /></div>               

        }