我在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>
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
我解决了问题,结果是我需要将以下几行添加到我的site.master:
<% Html.EnableClientValidation()%>
<% Html.EnableUnobtrusiveJavaScript(False)%>
由于某种原因,我在web.config中设置的密钥在部署到Web服务器时被忽略。一旦我将这些行添加到站点主页,一切都按预期工作。