【问题标题】:Request.IsAjaxRequest() always returns falseRequest.IsAjaxRequest() 总是返回 false
【发布时间】:2015-01-20 13:52:58
【问题描述】:

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

【问题讨论】:

    标签: c# jquery ajax asp.net-mvc-4 asp.net-ajax


    【解决方案1】:

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

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

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

    【讨论】:

    • 检查是否在脚本文件夹中获得了所需的所有文件。当包中描述的文件之一丢失时,没有明确的通知,它只是没有呈现它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2021-11-05
    • 2018-11-05
    • 2019-05-06
    相关资源
    最近更新 更多