2013-07-05 30 views
12

Tôi có đoạn mã sau bên trong bộ điều khiển của tôiKiểm tra Request.IsAjaxRequest luôn trả về false bên mvc4 asp.net của tôi

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);   
     } 

Nhưng nếu tôi gọi phương thức hành động trên sử dụng một Ajax.BeginForm ,, thì yêu cầu. IsAjaxRequest sẽ trả về false và xem một phần sẽ không được trả lại

@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

thử 'this.ControllerContext.HttpContext.Request.IsAjaxRequest()' – Satpal

Trả lời

21

Dường như với tôi rằng tôi đã không bao gồm các jquery.unobtrusive-ajax.min.js

+3

Tài liệu này được viết ở đâu? –

+0

@john G: bạn nên đánh dấu phần này là câu trả lời. Những công việc này. –

+8

nếu tôi không sử dụng jQuery thì sao ?? – Toolkit

0

Hi thử điều này và thay đổi quan điểm của bạn như niềm hy vọng này nó làm việc cho bạn

@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

Tôi chạy qua vấn đề này và wasnt chắc chắn những gì ma thuật đen file jquery.unobtrusive-ajax.min.js đang làm gì nhưng nó đã không làm việc cho tôi. Tôi rất vui khi tôi chạy ngang qua số post này giải thích vấn đề rất đơn giản.

Tác giả của bài đăng tuyên bố rằng có một tiêu đề cần được điền.

X-Requested-With => 'XMLHttpRequest'

Đối người dùng kiễu góc mà tìm bài này, tôi đã bao gồm một đoạn từ trên post.

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

productsApp.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest'; 
}]); 
Các vấn đề liên quan