2013-07-05 11 views
12

Mam następujący kod wewnątrz mojego kontroleraSprawdzanie Request.IsAjaxRequest zawsze return false w moim 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);   
     } 

Ale jeśli zadzwonię powyższej metody działania przy użyciu Ajax.BeginForm ,, następnie żądanie. IsAjaxRequest zwróci false i częściowy widok nie będą zwracane

@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> 
+0

try 'this.ControllerContext.HttpContext.Request.IsAjaxRequest()' – Satpal

Odpowiedz

21

Wydaje mi się, że nie zawierają jquery.unobtrusive-ajax.min.js

+3

Gdzie jest to udokumentowane? –

+0

@john G: należy oznaczyć to jako odpowiedź. To działa. –

+8

co zrobić, jeśli nie używam jQuery? – Toolkit

0

Hi spróbować i zmienić widok jak tej nadziei, że to praca dla ciebie

@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>    

     } 
1

natknąłem tego problemu i nie było pewności, co czarna magia plik jquery.unobtrusive-ajax.min.js robił, ale to było nie pracy dla mnie. Byłem szczęśliwy, gdy natknąłem się na to post, co wyjaśnia bardzo prosty problem.

Autor postu oświadczył, że istnieje nagłówek, który należy wypełnić.

X-Requested-With => 'XMLHttpRequest'

Dla kątowe użytkowników, że ten post mam włączone fragment z góry post.

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

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