Asp.net mvc asp.net MVC Ajax请求未正确触发

Asp.net mvc asp.net MVC Ajax请求未正确触发,asp.net-mvc,ajax,model-view-controller,Asp.net Mvc,Ajax,Model View Controller,我不明白为什么这个Ajax请求没有正确启动。为了简单起见,我一直在尝试使用实现Ajax请求。但是,我无法让我的控制器识别请求。我已经尝试将Ajax.ActionLink放在div中,以便在此之外进行更新 使用Response.Write来放置日期时间,Div内的日期时间会得到更新,而目标Div外的日期时间则不会像预期的那样得到更新。我对MS-Ajax库的工作方式不太熟悉,但表面上它似乎在更新页面的正确部分,但我的控制器无法识别请求类型,因此输出了错误的信息 ... <script

我不明白为什么这个Ajax请求没有正确启动。为了简单起见,我一直在尝试使用实现Ajax请求。但是,我无法让我的控制器识别请求。我已经尝试将Ajax.ActionLink放在div中,以便在此之外进行更新

使用Response.Write来放置日期时间,Div内的日期时间会得到更新,而目标Div外的日期时间则不会像预期的那样得到更新。我对MS-Ajax库的工作方式不太熟悉,但表面上它似乎在更新页面的正确部分,但我的控制器无法识别请求类型,因此输出了错误的信息

...
    <script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
    <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div class="chart" id="divChart">
        <% Html.RenderPartial("GraphView", Model); %>
        <br />
        <% Response.Write(DateTime.Now); %>
        <br />
    </div>
    <%= Ajax.ActionLink("no parameters", "MyWorkouts", new AjaxOptions{ UpdateTargetId = "divChart"}) %>
    <%= Ajax.ActionLink("id parameter", "MyWorkouts", new {chtype=1},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
    <%= Ajax.ActionLink("all parameters", "MyWorkouts", new {chtype=2, range=ViewData["daterangevalue"]},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
    <br />
    <% Response.Write(DateTime.Now); %>
    <h2>
...

一切都是默认的,因为这只是一个测试页面,一旦我弄明白了就可以实现它。因此,我一直在获取目标div内部的完整视图。

我不确定问题出在哪里,但Fiddler和RoutedBugger可能有助于调试它。

看起来您可能正在使用旧版本的MVC framework

如果是这样,我建议更新到发布版本,并确保您使用的是最新的jquery和mvc脚本。。。在Request.IsAjaxRequest方法的工作方式上有一些特别的变化,这些变化可能与您的问题有关


此外,如果其中涉及到RedirectToAction调用,您可能希望阅读有关的。

它不会显示在您发布的代码段中,但您很可能有表单/表单标记。这些都会干扰Ajax.BeginForm,后者也会生成表单标记。一旦删除外部表单标记,Request.IsAjaxRequest将返回true。

我相信我的开发机器上安装了RC1,我知道我还没有更新到RC2。此外,省略的代码中根本没有重定向操作或任何重定向类型行为,只有一些服务层调用。我不认为这是路由问题,因为它指向正确的控制器-它只是不将请求识别为Ajax请求。我得试试Fiddler,但我一直在用Firebug,什么也没找到。
[AcceptVerbs(HttpVerbs.Get)]
        public ActionResult MyWorkouts(int? chtype, int? range) {
            int dateRange = 3;

             // do some stuff here - left out for readability

            if (Request.IsAjaxRequest()) {
                if (range != null) {
                    dateRange = (int)range;
                }

            }

           //do some other stuff...

            if (Request.IsAjaxRequest()) {
                return PartialView("GraphView", workouts);
            } else {
                return View(workouts);
            }
        }