当我发布到我的MVC3项目时,Ajax不起作用

时间:2011-09-21 16:44:01

标签: ajax asp.net-mvc-3

我的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>

1 个答案:

答案 0 :(得分: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中存在虚拟目录,因此正确的网址不再是/Scripts/MicrosoftAjax.debug.js而是/NameOfYourApplication/Scripts/MicrosoftAjax.debug.js

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