Request.IsAjaxRequest()总是返回false

问题描述:

Request.IsAjaxRequest()总是返回false。我已经看到这被问了很多次,通常包括jquery.unobtrusive-ajax.min.js修复这个,但无法找出什么是错的。我在我的脚本包中包含了jquery.unobtrusive-ajax.min.js,我似乎找不到任何错误,为什么它返回false。我把一个断点,它的每一次Request.IsAjaxRequest()总是返回false

这里是我的代码跃过if(Request.IsAjaxRequest())

首页控制器

 public ActionResult Index(string sortOrder) 
     { 
     ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; 

     using (var db = new ActorMovieDB()) 
     { 
      var actors = from A in db.Actors 
         select A; 
      switch (sortOrder) 
      { 
       case "name_desc": 
        actors = actors.OrderByDescending(A => A.ActorName); 
        break; 
       case "Date": 
        actors = actors.OrderBy(A => A.DateOfBirth); 
        break; 
       case "awardsWon": 
        actors = actors.OrderByDescending(A => A.AwardsWon); 
        break; 
       default: 
        actors = actors.OrderBy(A => A.ActorName); 
        break; 
      } 
      if (Request.IsAjaxRequest()) 
      { 
       return PartialView("_Actors", actors.ToList()); 
      } 
      else 
      { 
       return View(actors.ToList()); 
      } 

     } 
    } 

我的索引视图

  @Ajax.ActionLink("Awards Won","index",new { sortOrder = "Date" }, 
      new AjaxOptions 
      { 
       HttpMethod = "Get", 
       UpdateTargetId="actorsdiv", 
       InsertionMode = InsertionMode.Replace}, 
      new { @class = "btn btn-info" }) 

      @Html.Partial("_Actors",Model) 
      <div class="jumbotron" id="actorsdiv" style="margin:100px;width:1150px"> 


     @foreach (var item in Model) 
     { 
     <ul> 

     <li> 
      <img src="@item.ImageUrl" width="150" height="150" style="margin-    /> 
      <h4>Name: @item.ActorName</h4> 
      <p>Date of Birth: @item.DateOfBirth.ToShortDateString()</p> 
      <p>Awards Won: @item.AwardsWon</p> 
    </li> 
    </ul> 

    } 
    </div> 

束配置

    public static void RegisterBundles(BundleCollection bundles) 
       { 
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js", 
        "~/Scripts/toastr.js", 
        "~/Scripts/bootstrap.js" 
        )); 

     bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
        "~/Scripts/jquery-ui-{version}.js")); 

     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*", 
        "~/Scripts/jquery.unobtrusive-ajax.min.js" 
        )); 



     bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
        "~/Scripts/modernizr-*")); 

     bundles.Add(new StyleBundle("~/Content/css") 
      .Include("~/Content/bootstrap.css", "~/Content/toastr.css" 
         )); 

你在web.config中启用了不显眼的JavaScript吗?

<appSettings> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

Request.IsAjaxRequest()函数检查HTTP标头 “X-请求-用”:如果该值是 “XMLHttpRequest的” 返回true,否则为假。

+0

你已经完成了 – user2790781 2014-11-22 14:16:26

+1

检查你是否在脚本文件夹中找到了你需要的所有文件。当包中描述的文件之一丢失时,没有明确的通知,它只是不渲染它们。 – 2014-11-22 14:40:41