asp.net を介してクライアントからサーバーにファイルをアップロードしようとしています。問題は、TabPanel 内で fileupload コントロールが機能しないことです。基本的に、fileupload のファイル名と postedfiles プロパティは、送信後に null になります。そして、TabPanel を追い出すことはできません。
私は他の解決策を探しています。1 つは、ユーザーがファイルのパスを入力フィールドに入力してボタンを送信することを要求することです。
問題は、ファイルのパスに基づいてファイルをアップロードする方法です。
あなたの助けは非常に高く評価されます。
コードはこんな感じ。問題のコントロール 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;
}