我正在尝试通过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;
}
答案 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");
}