今天做了一个ajax.net的东西,虽然实现了功能,但是无意间发现了一个小问题,原本以为做有什么问题了,后来发现这个问题很有意思,放出来看看!
这是个两级下来框的例子:
Code
asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="dpdCateslst" runat="server" AutoPostBack=true
onselectedindexchanged="dpdCateslst_SelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList ID="dpdchilds" runat="server"></asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="dpdCateslst" />
</Triggers>
</asp:UpdatePanel>
asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="dpdCateslst" runat="server" AutoPostBack=true
onselectedindexchanged="dpdCateslst_SelectedIndexChanged"></asp:DropDownList>
<asp:DropDownList ID="dpdchilds" runat="server"></asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="dpdCateslst" />
</Triggers>
</asp:UpdatePanel>
以上是页面的代码,后台的代码我想 不写也知道了。
现在我的问题出现了:
当我第一次加载页面的时候,可以像我认为的那样来实现无刷新的效果,这个很好。
但是问题是,当我选择了一级下拉框的时候,选择一次,然后我点击页面右键:刷新,然后我再来选择一次一级框,最后再点击一次右键刷新,问题出来了,我发现又出现了“重试”的按钮,试验了n次后,还是找不到问题的原因所在,后来我在发现第二次选择下拉框的时候叶面积的确是刷新了一次,那么“重试”的按钮是必然会出现的。
原先觉得是页面加载的问题,在无刷新的状态下,点击刷新页面,会造成页面重新加载。但是后来一想ms的控件都是基于viewstate的,那么说明UpdatePanel的信息也写在viewstate中,只是由ScriptManager来处理这些页面信息,然后读出来,整个过程是js来处理的,所以是无刷新的,但是“重试”以后,页面是怎样的一个状态我就搞不懂了。。。