【问题标题】:Using FileUpload on a modal popup and handling postbacks在模式弹出窗口上使用 FileUpload 并处理回发
【发布时间】:2014-12-20 02:26:23
【问题描述】:

我陷入了第 22 条第 22 条规定的情况……

我有一个 ASP.NET 4.0 Webforms 应用程序,它使用模型弹出窗口(使用 Ajax 控件工具包的 ModalPopupExtender 组件)从用户那里获取输入。

一个屏幕用于添加新成员,或编辑现有成员的记录。这些记录包括成员的照片,我使用标准 ASP.NET FileUpload 控件上传。

该创建/编辑屏幕包含在 UpdatePanel 中,因此当我弹出叠加层时,我可以用现有值填充文本框(编辑现有成员时)。

由于弹出窗口使用UpdatePanel,我必须明确定义PostBackTrigger,以便我的Save 按钮实际上会导致完整的回发,以便我能够读取上传图片的字节在FileUpload 控件中。

<asp:UpdatePanel ID="pnlCreateOrEdit" runat="server">
    <ContentTemplate>
        .... asp.net controls here, including:
        <asp:FileUpload ID="uploadPic" runat="server" />
        ....
        <asp:Button ID="btnSave" runat="server" OnClick="BtnSaveClicked" Text="Save" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnSave"/>
    </Triggers>
</asp:UpdatePanel>

如果我不定义那个PostBackTrigger,那么我上传的文件就不能被读出。

但是:一旦我定义了回发触发器,现在我就不能再进行验证了,因为如果我在 btnSaveClicked 方法中进行验证并且它失败了(例如缺少某些东西),我可以检测到 - 但我无法再回应它,因为无论我到目前为止尝试了什么,弹出窗口都会关闭....

protected void BtnSaveClick(object sender, EventArgs e) {
   // do my validation - if something is amiss, don't go any further
   if (!IsValid()) {
      return;
   }

   // read back the data
   // hide the modal popup form
   // call an event handler to process the inputs
}

所以现在我被困住了:

  • 如果我省略回发触发器,我的验证效果很好 - 如果有问题,它会被标记并显示在弹出表单上,并且弹出窗口不会关闭
    ==> 但是在这种情况下我无法读出上传图片的字节.....(uploadPic.HasFile 始终是false

  • 如果我放入回发触发器,我的文件上传效果很好,我可以读出我的字节没问题
    ==> 但是现在,我的验证 - 虽然检测到有问题 - 无法显示错误,因为弹出表单正在被完整的回发关闭....

有没有办法获得 BOTH - FileUpload 控件中的字节,AND 如果验证失败,弹出窗口保持打开状态?

【问题讨论】:

    标签: c# asp.net file-upload webforms updatepanel


    【解决方案1】:

    此弹出窗口将为您提供完全控制权,而不会出现任何回发问题。 你可以在这里看到这个:http://atldunia.com/youtube/Zpopup.aspx 你也可以下载代码。

    【讨论】:

      【解决方案2】:

      我最终使用了 Ajax Control Toolkit 中的 AsyncFileUpload 组件 - 这在 UpdatePanel 上运行良好,可以满足我的所有需求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 2013-02-03
        • 2013-05-04
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多