0

我正在尝试通过 asp.net 将文件从客户端上传到服务器。问题是文件上传控件在 TabPanel 中不起作用。基本上fileupload的文件名和postedfiles属性在提交后为空。而且我无法将 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;
    }
4

1 回答 1

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");
    } 
于 2012-10-16T20:46:03.147 回答