【问题标题】:Cannot get Ajax working in ASP.NET MVC Razor无法让 Ajax 在 ASP.NET MVC Razor 中工作
【发布时间】:2012-07-07 01:30:12
【问题描述】:

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

我正在使用 ASP.NET MVC 4 和 Razor。我的目标是做一些 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 并在空白页上打印出当前时间。

这显然不是我所期望的

【问题讨论】:

  • 你有 jquery 也包含在 _layout 中吗?因为顾名思义,jquery.unobtrusive 在内部使用 jquery... 还有一件事,而不是“硬编码”路径使用 Url.Content,例如:&lt;script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"&gt;&lt;/script&gt;

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


【解决方案1】:

好吧,我刚刚想通了-

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-31
      • 2012-12-13
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多