asp.net – Ajax.ActionLink不工作,Response.IsAjaxRequest()始终为false

前端之家收集整理的这篇文章主要介绍了asp.net – Ajax.ActionLink不工作,Response.IsAjaxRequest()始终为false前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在谷歌搜索/ SO:这个问题有一段时间,许多人似乎正在分享,但我没有找到任何成功的解决方案我的问题。

使用MVC3和剃刀。

>主页包含:

< 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”,新的AjaxOptions {UpdateTargetId =“AjaxTestDiv”})
> AjaxTester动作方法

public string AjaxTester()
{
    if (Request.IsAjaxRequest())
    {
        return DateTime.Now.ToString();
    }
    else
    {
        return "FAIL";
    }
}

我总是得到“FAIL”返回,到一个空白页,不在目标div。

编辑:还要注意,如果我删除if(Request.IsAjaxRequest()),我仍然没有回到任何目标的div,而是一个空白的页面

编辑2:看看生成的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。* helpers都使用不引人注意的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- *属性的所有链接

甚至更好的IMHO:

在你看来,只是:

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

并在一个单独的javascript文件AJAXify这个锚点:

$(function() {
    $('#mylink').click(function() {
        $('#AjaxTestDiv').load(this.href);
        return false;
    });
});
原文链接:https://www.f2er.com/aspnet/253564.html

猜你在找的asp.Net相关文章