我有一个用UpdatePanel包围的向导控件,我想在完整的步骤中使用FileUpload控件。我知道如果将一个触发器添加到UpdatePanel,FileUpload控件将仅在UpdatePanel内部工作,但是,我的UpdatePanel在下面的示例中找不到Button1控件。我相信这只是完整步骤的“功能”。在完成步骤中是否有另一种方式(最好是简单方法)?
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:Wizard ID="Wizard1" runat="server">
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1">
</asp:WizardStep>
<asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2" StepType="Complete">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" />
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:3)
好的,在浏览互联网几个小时后,我找到了解决方案。所需要的是向导完成步骤中的另一个嵌套UpdatePanel,其中Button1上有PostBackTrigger,外部UpdatePanel上有匹配的PostBackTrigger。
如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:Wizard ID="Wizard1" runat="server">
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1">
</asp:WizardStep>
<asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2" StepType="Complete">
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" />
<ContentTemplate/>
<UpdatePanel/>
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
</ContentTemplate>
</asp:UpdatePanel>
此外,您可能会发现第一次上传文件时您的控件没有该文件。我不知道原因,但您可能需要在表单标记上使用enctype =“multipart / form-data”。
我希望有人在将来发现这有用。