Panel に追加する、動的に生成された FileUpload コントロールの値を取得しようとしています。
<asp:Panel ID="pFileControls" runat="server">
</asp:Panel>
レコード セットのループ中にコントロールを作成します。
foreach(DataRow dr in ds.Tables[0].Rows)
{
FileUpload fu = new FileUpload();
fu.ID = dr["SomeID"].ToString();
pFileControls.Controls.Add(fu);
}
このボタンを使用してフォームを送信するまで、すべてが正常に機能します。
<asp:Button ID="btnImportFile" runat="server" Text="Save" OnClick="btnImportFile_Click" />
私はこのように登録します(Page_Load):
ScriptManager.GetCurrent(this).RegisterPostBackControl(btnImportFile);
これを行うのは、Web サイトで MasterPage/ContentPage 設定を使用しており、ほとんどすべてが AJAXification の目的で UpdatePanel 内で行われるためです。HTML ビューで FileUpload コントロールを明示的に指定すると、100% 機能することに注意してください。
フォームが送信されると、次のように Panel を反復しようとします。
foreach (Control ctrl in pFileControls.Controls)
{
if (ctrl.GetType() != typeof(FileUpload))
{
continue;
}
//Do the saving of the file here
}
例外として、Panel は 1 つのコントロールのみを返すように見えます: ページのコンテンツ プレース ホルダーと他には何もありません。誰かがこれについていくつかのアイデアを持っていますか?