【问题标题】:Ajax doesnt work when I publish to my MVC3 project当我发布到我的 MVC3 项目时,Ajax 不起作用
【发布时间】:2011-09-21 16:44:00
【问题描述】:

我在 MVC3 项目中遇到了关于使用 ajax 的问题。我已经完成了一些使用它的设置,例如在母版页中添加一些脚本并在 web.config 文件中更改一些内容等。

实际上,在所有这些事情之后,我的项目在我的本地服务器上运行良好。但是当我发布它时,ajax 的东西不再起作用了。

你有解决这个问题的想法吗?我要做什么? 如果有人可以帮助我,那就太好了。

提前致谢。

这些东西在我的母版页中。

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

这些来自 web.config 我刚刚将 UnobtrusiveJavaScriptEnabled 值从“true”更改为“false”

<configuration>
  <appSettings>
    <add key="inspector" value="EmrTelInspector" />
    <add key="browserExpireCookie" value="EmrTel" />
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="false" />
  </appSettings>

【问题讨论】:

    标签: ajax asp.net-mvc-3


    【解决方案1】:

    替换:

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

    与:

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

    或者如果您使用的是 WebForms 视图引擎:

    <script src="<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" type="text/javascript"></script>
    <script src="<%= Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>" type="text/javascript"></script>
    

    您的代码在发布时不起作用的原因是因为 IIS 中有一个虚拟目录,因此正确的 url 不再是 /Scripts/MicrosoftAjax.debug.js 而是 /NameOfYourApplication/Scripts/MicrosoftAjax.debug.js

    因此,您不应该在 ASp.NET MVC 应用程序中对任何 url 进行硬编码。您应该始终使用 url 帮助程序来确保此应用程序无论部署在何处都能正常工作。

    【讨论】:

    • Tahanks 很多达林。特别是对于快速回答。但不幸的是它仍然不起作用。我不知道我需要使用@url.content ...我已经替换了它们。也许我在某个地方也有更多错误。
    • @serhads,您可以使用 FireBug 或 Chrome 开发人员工具来分析正在下载的所有资源,并确保路径正确并且您没有收到 404 错误。
    • @serhads,是的,您需要更换它。您不应该对其进行硬编码。您应该使用 Html.BeginFormAjax.BeginForm 助手来生成表单。
    • 不,这是个误会。我从 chrome 开发人员工具中获得了该代码。我确实使用了 ajax.beginform。对不起。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签