无法让Ajax在ASP.NET MVC Razor中工作

时间:2012-07-06 15:02:16

标签: asp.net-mvc asp.net-ajax asp.net-mvc-4

好的,所以我花了整整一天的时间试图弄清楚这一个 - 但我不能!这是我的问题。

我正在使用ASP.NET MVC 4&剃刀。我的目标是做一些BASIC Ajax。我想要做的就是在我的页面上有一个div,它由Ajax链接更新 - 以证明Ajax正在工作。

我认为这个问题与我需要使Ajax工作的脚本文件有关。默认情况下,我甚至没有脚本目录 - 所以我创建了一个,并找到了MicrosoftAjax.js,MicrosoftMvcAjax.js和jquery.unobtrusive-ajax.min.js-并在头部添加了对_Layout.cshtml的引用

这就是我所拥有的:

在我的_Layout.cshtml中,我脑子里有以下内容

<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftMvcAjax.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftMvcValidation.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.unobtrusive-ajax.min.js">/script>`

在我的HomeController.cs中我有:

    [HttpGet]
    public string GetStatus()
    {
        return DateTime.Now.ToLongTimeString();
    }

在我的About.cshtml文件中,我有以下内容:

  @Ajax.ActionLink("Ajax Test", "GetStatus", new AjaxOptions{UpdateTargetId="testtarget", HttpMethod = "Get"})`enter code here`
< div id="testtarget">Test Div</div>

当我编译应用程序时,我可以看到“Ajax Test”链接和“Test Div”文本。

当我点击“Ajax测试”时,我被重定向到Home / GetStatus并打印出当前时间到空白页面。

这显然不是我的预期

2 个答案:

答案 0 :(得分:0)

好吧,我刚想出来了 -

在MVC2之后不再使用MicrosoftAjax javascript文件 - 只需将jquery和jqueyr.unobtrusive-ajax.min添加到您的头部 - 然后完全相同的代码可以工作:)

答案 1 :(得分:0)

对于在这篇文章中寻找答案的人,我还要补充一下:确保您已正确配置web.config以允许不​​显眼的库工作

&#13;
&#13;
<appSettings>
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
&#13;
&#13;
&#13;