かなり簡単です。アップロードする前にファイルにタイトルを追加できるユーザーを探しています。(はい、適切なファイル名をお勧めしますが、それは重要ではありません。)
<asp:TextBox runat="server" ID="txtDocumentTitle" />
<ajaxToolkit:AjaxFileUpload runat="server" ID="ajxUploadNDA" OnUploadComplete="ajxUpload_Complete" Width="400px" /><br />
protected void ajxUpload_Complete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
MyFile f = new MyFile();
f.DocumentType = e.ContentType;
f.FileBytes = e.GetContents();
f.FileName = e.FileName;
f.DocumentCategory = "Package Files";
f.FileUploaded = DateTime.Now;
f.DocumentTitle = txtDocumentTitle.Text;
f.Save();
DataBind();
}
ただし、ブレークポイントを設定すると、txtDocumentTitle.Text は常に空白になります。完全なポストバックを強制したり、そのテキストボックスの現在の値を取得する他の方法を見つけることができないようです。ファイルがアップロードされた後にユーザーがこれらのプロパティを編集できるようにすることはできますが、いくつかの理由から、それは私が好む設計ではありません。(値をデフォルトのままにしておくことをお勧めします。)
私はもう試した:
protected void Page_Init(object sender, EventArgs e)
{
ScriptManager.GetCurrent(Page).RegisterPostBackControl(ajxUploadNDA);
ScriptManager.GetCurrent(Page).SupportsPartialRendering = false;
ScriptManager.GetCurrent(Page).EnablePartialRendering = false;
}
そして私は試しました
<ajaxToolkit:AjaxFileUpload runat="server" ID="ajxUploadNDA" OnUploadComplete="ajxUpload_Complete" Width="400px" onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();" />
どんな提案でも大歓迎です。