Request.IsAjaxRequest() 总是返回 false

本文关键字:返回 false IsAjaxRequest Request | 更新日期: 2023-09-27 18:31:27

Request.IsAjaxRequest()总是返回false。我已经看到这个问题被问了很多次,通常包括jquery.unobtrusive-ajax.min.js修复,但无法弄清楚出了什么问题。我已经在我的脚本包中包含jquery.unobtrusive-ajax.min.js,我似乎找不到任何错误来解释为什么它返回 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"
                        ));

Request.IsAjaxRequest() 总是返回 false

您是否也在web.config中启用了不显眼的JavaScript?

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

Request.IsAjaxRequest() 函数检查 http 标头 "X-Request-With":如果值为 "XMLhttprequest",则返回 true,否则返回 false。