TabPanel中的asp.net上传文件

时间:2012-10-16 19:49:04

标签: asp.net file-upload path tabpanel

我正在尝试通过asp.net将文件从客户端上传到服务器。 问题是fileupload控件在TabPanel中不起作用。 基本上,fileupload的文件名和postedfiles属性在提交后为null。 我不能踢TabPanel。

我正在寻找其他解决方案。 一个是我要求用户将文件的路径输入到输入字段并提交一个按钮。

问题是如何根据文件的路径上传文件?

我们非常感谢您的帮助。

代码是这样的。 有问题的控件ID是“fuAttachments”

<asp:updatepanel id="upnlForTab" runat="server">
<ContentTemplate>
            <asp:TabContainer ID="tcFS" runat="server" ActiveTabIndex="0">                    
                <asp:TabPanel ID="TabPanelAnnualFS" runat="server" HeaderText="AnnualFS">                    
                    <ContentTemplate>     
                        <asp:FormView ID="fvAnnualFS" OnDataBound="fvAnnualFS_DataBound" runat="server">
                            <InsertItemTemplate>
                            </InsertItemTemplate>
                            <EditItemTemplate>
                                <table>
                                    <tr>
                                        <td colspan="2">
                                            Edit a Financial Statement
                                            <asp:HiddenField ID="hfIDStatement" runat="server" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            Attachments:
                                        </td>
                                        <td>
                                            <asp:GridView ID="gvAttachments" AutoGenerateColumns="false" runat="server">
                                                <Columns>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:Label runat="server" Text='<%#Eval("AttachmentName")%>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                </Columns>
                                            </asp:GridView>
                                            <asp:FileUpload ID="fuAttachments" runat="server" /> 
                                            <asp:Button ID="btnAddAttachment" runat="server" OnClick="btnAddAttachment_Click" Text="Add" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Button ID="btnSubmitEditAnnualFS" ValidationGroup="SaveFS" OnClick="btnSubmitEditNewAnnualFS_Click"
                                                runat="server" Text="Submit" />
                                        </td>
                                        <td>
                                        </td>
                                    </tr>
                                </table>
                            </EditItemTemplate>
                        </asp:FormView>
                    </ContentTemplate>
                </asp:TabPanel>
            </asp:TabContainer>
</ContentTemplate>

在后端,代码是这样的。 问题是fuAttachments的所有属性都没有发布,这是updatepanel和tabpanel中文件上传控制的一个已知问题。

        /// <summary>
    /// Add document to the document list.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        HiddenField hfIDStatement = fvAnnualFS.FindControl("hfIDStatement") as HiddenField;
        FileUpload fuAttachments = fvAnnualFS.FindControl("fuAttachments") as FileUpload;
    }

1 个答案:

答案 0 :(得分:1)

首先,您的HiddenField和FileUpload将无法以您的方式找到它们。它们嵌套在其他对象中,所以你必须先找到它们的父对象,我知道这有点痛苦。

    protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
        TemplateControl UploadContainer = (TemplateControl)btn.Parent;

        HiddenField hfIDStatement = (HiddenField)UploadContainer.FindControl("hfIDStatement");
        FileUpload fuAttachments = (FileUpload)UploadContainer.FindControl("fuAttachments");
    }