【发布时间】:2010-05-07 11:57:08
【问题描述】:
我有一个 UpdatePanel,它有一个上传控件和一个上传按钮。该按钮被设置为触发器,但该按钮的事件处理程序未能在第一个 PostBack 上执行。
我的 ASPX 代码是:
<asp:UpdatePanel ID="updPages" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="tabs">
<ul>
<li><asp:LinkButton ID="lnkContentsPages" runat="server" OnClick="updateContents" CommandArgument="pages">Pages</asp:LinkButton></li>
<%-- these tabs change the ActiveViewIndex to show a different UserControl --%>
<li><asp:LinkButton ID="lnkContentsImages" runat="server" OnClick="updateContents" CommandArgument="images">Images</asp:LinkButton></li>
</ul>
<div class="tabbedContent">
<asp:MultiView runat="server" ID="mltContentsInner" ActiveViewIndex="0">
<asp:View ID="viwContentsImages" runat="server">
// ajax usercontrol for a list of images - works fine with ajax
<fieldset>
<legend>Upload New</legend>
<div class="formRow">
<asp:Label ID="lblFile" runat="server" Text="Filename" AssociatedControlID="uplFile" />
<asp:FileUpload ID="uplFile" runat="server" />
</div>
<div class="formRow">
<asp:Label ID="lblImageDescription" runat="server" Text="Description" AssociatedControlID="txtImageDescription" />
<asp:TextBox runat="server" ID="txtImageDescription" />
</div>
<asp:Button ID="btnUpload" runat="server" Text="Upload" CssClass="c3button btnUpload" CausesValidation="false" OnClick="btnUpload_Click" />
</fieldset>
</asp:View>
<asp:View ID="viwContentsPages" runat="server">
// ajax usercontrol - works fine with ajax
</asp:View>
</asp:MultiView>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
该按钮在第二次和随后的时间都可以正常工作,但不是第一次。这有什么原因吗?
【问题讨论】:
-
运气好能解决这个问题吗?
-
很遗憾没有。行为似乎是断断续续的,这是最糟糕的错误类型。
-
可以添加服务器端代码吗?
-
我会把它剥离到裸露的骨头上。更新面板和按钮并查看它是否触发,然后开始添加控件并一次重新编写一个代码以查看发生了什么故障。它。
-
第一次不会触发,即使只有按钮。
标签: asp.net ajax updatepanel postback