我有一个简单的ASP.NET 4.0 Web表单,它有一个UpdatePanel,里面有一个按钮和TextBox。没有什么不寻常之处(它不在转发器内,也不在动态控件内)。
异步回发在我的测试服务器(Windows Server 2003)上运行良好。
然而,当我复制到我的网络托管公司(smarterasp.net,Server 2012)时,它会进行完整的回发。我尝试了托管控制面板中的所有可用设置,但没有任何效果(例如,HTTP压缩,集成模式,输出缓存)。
是否有任何常见原因导致这种情况发生在不同的服务器上?
<asp:UpdatePanel ID="panSlug" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="form-group">
<asp:Label ID="lblSlug" runat="server" AssociatedControlID="txtSlug" Text="Slug"></asp:Label>
<div class="input-group">
<asp:TextBox ID="txtSlug" runat="server" CssClass="form-control" MaxLength="100"></asp:TextBox>
<span class="input-group-btn">
<asp:Button ID="btnSlugSuggest" runat="server" CssClass="btn btn-default" OnClick="btnSlugSuggest_Click" Text="Suggest" />
</span>
</div>
<asp:RequiredFieldValidator ID="valSlug" runat="server" ControlToValidate="txtSlug" Display="None" ErrorMessage="Slug is a required field" ValidationGroup="Product"></asp:RequiredFieldValidator>
<p class="help-block">Slug is the URL of the product (no spaces or non alpha numeric characters)</p>
</div>
</ContentTemplate>
</asp:UpdatePanel>
查看本地服务器上的输出HTML,该按钮呈现为带有onclick事件的输入类型按钮,而在实时服务器上,它呈现为没有onclick事件的提交按钮。
在Developer Tools控制台中显示两个错误:&#34; ASP.NET Ajax客户端框架无法加载&#34;和#34;系统没有定义&#34;。
答案 0 :(得分:1)
事实证明,我在global.asax中设置了一个页面路由,阻止了axd文件的加载。
我在global.asax中缺少routes.Ignore("{resource}.axd/{*pathInfo}");
。
希望这个答案可以帮助其他人作为UpdatePanels问题的另一种可能的解决方案。
答案 1 :(得分:0)
将其添加到UpdatePanel:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSlugSuggest" />
</Triggers>