asp.net - Ajax.ActionLink无法正常工作,Response.IsAjaxRequest()始终为false

标签 asp.net asp.net-mvc ajax

我一直在使用谷歌搜索/搜索:解决这个问题已有一段时间了,许多人似乎都在分享这个问题,但是我没有找到成功解决我问题的方法。

使用MVC3和Razor。

  • 主页面包含:
    <script src="@Url.Content("~/Scripts/jquery-1.5.min.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
  • AjaxTest.cshtml包含:
    <div id="AjaxTestDiv">content</div>@Ajax.ActionLink("Update", "AjaxTester", new AjaxOptions { UpdateTargetId = "AjaxTestDiv" })
  • AjaxTester操作方法:
    public string AjaxTester()
    {
        if (Request.IsAjaxRequest())
        {
            return DateTime.Now.ToString();
        }
        else
        {
            return "FAIL";
        }
    }
    

  • 我总是将“失败”返回到空白页,而不是目标div中。

    编辑:还请注意,如果删除if(Request.IsAjaxRequest()),我仍然不会将任何内容返回给目标div,而是将其留空。

    Edit2:查看生成的HTML,这是我的链接:
    <a data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace"
    data-ajax-update="#AjaxTestDiv" href="/Area/AjaxTester">Update</a>
    

    尝试将方法切换为GET,但无济于事。

    最佳答案

    默认情况下,ASP.NET MVC 3对所有Ajax.*帮助器使用不引人注目的jquery。因此,首先摆脱所有MicrosoftAjax脚本(此无用的c ** p),然后放置以下内容:

    <script src="@Url.Content("~/Scripts/jquery-1.5.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    

    然后只需在web.config中激活毫不费力的AJAX(如果尚未完成):
    <appSettings>
        <add key="ClientValidationEnabled" value="true"/> 
        <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings>
    

    现在,jQuery将毫不客气地AJAXify包含那些HTML 5 data-*属性的所有链接。

    甚至更好的恕我直言:

    您认为:
    @Html.ActionLink("Update", "AjaxTester", new { id = "mylink" })
    

    并在单独的javascript文件AJAXify中将此 anchor 定:
    $(function() {
        $('#mylink').click(function() {
            $('#AjaxTestDiv').load(this.href);
            return false;
        });
    });
    

    关于asp.net - Ajax.ActionLink无法正常工作,Response.IsAjaxRequest()始终为false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973605/

    相关文章:

    c# - 如何检测在后面的代码中单击了哪个按钮?

    c# - 如何在使用 jquery.MultiFile.js 时扩展最大文件大小以上传和发送(通过电子邮件)文件

    asp.net - 使用installshield安装后运行解决方案exe

    javascript - 检查函数是否在 Ajax 和 WebMethod 中返回任何数据

    javascript - 如何将curl上传进度发送给ajax显示

    c# - 设置单元测试以使用 Unity 测试 Controller

    c# - 让 jqGrid 使用不同的页面来查看一行

    asp.net-mvc - 将 "#"添加到 Url.Action

    javascript - 如何通过 ajax 刷新由 JSF 填充的 javascript 变量?

    javascript - 规避原产地政策的方法