我的 asp.net mvc 网站中有以下视图定义:
<% Using Ajax.BeginForm("UsrCtlChangePassword", "User", Nothing, New AjaxOptions With {.UpdateTargetId = "resultDiv", .InsertionMode = InsertionMode.Replace, .HttpMethod = "Post"}, New With {.id = "myFormID"})%>
<%: Html.ValidationSummary(True, "Invalid details supplied.")%>
...View field definition in here
...
<% End Using%>
</div>
所以基本上当用户输入无效信息(旧密码不匹配)时,整个页面不会只刷新 targetdiv。
这在我的开发环境中完美运行。我遇到的问题是我现在已经将它部署到我的 Web 主机服务器(softsys windows 2008 服务器),但它在部署的服务器上不起作用。它完全忽略了 ajax 插入模式逻辑,只是发回了整个表单。
为什么它会在 dev 而不是部署服务器上工作?我检查了所有的 dll 和脚本,一切似乎都在那里。以下是我的 bin 文件夹中的 dll:
我在 web.config 中设置了以下键(我将 UnobtrusiveJavaScriptEnabled 更改为 true,但没有任何区别):
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
这是我的 site.master 中的脚本链接:
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<link href="<%: Url.Content("~/Content/themes/Redmond/jquery-ui.css")%>" rel="stylesheet" type="text/css" />
<script src="<%: Url.Content("~/Scripts/jquery-1.5.1.min.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/modernizr-1.7.min.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery-ui-1.8.11.min.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery.cookie.js") %>" type="text/javascript"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/MicrosoftAjax.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/MicrosoftMvcValidation.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/MicrosoftMvcAjax.js") %>"></script>
有任何想法吗?
提前致谢。