2013-02-07 86 views
0

我想在使用AjaxControlToolkit中的AsyncFileUpload組件將文件上載到服務器後設置標籤文本值。但它接近它是無效的,雖然文件上傳在上傳後是綠色的,並且上傳工作。AjaxControlToolkit AsyncFileUpload - 如何修改UploadedComplete事件中的標籤文本值

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
{ 
    string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName); 
    AsyncFileUpload1.SaveAs(Server.MapPath("Uploads/") + filename); 
    sourceLabel.Text="saved to "+filename; //this has no effect. I assume this is because the event is Async, but how can I set the value of sourceLabel? 
} 

回答

0

AsyncFileUpload控件使用隱藏幀來提交文件,所以控件的所有更新都將丟失。檢查此鏈接和uploadResult標籤的文本從AsyncFileUpload1_UploadedComplete方法如何改變引起注意:Ajax Control Toolkit source code

0

它爲我的作品:https://stackoverflow.com/a/12472235/2247978

................... .................................................. ................................

添加HiddenField控件上的一種形式:

<asp:HiddenField runat="server" ID="UploadedPathHiddenField" /> 

重寫UploadComplete方法如下:

protected void UploadComplete(object sender, AsyncFileUploadEventArgs e) 
{ 
    var fileName = GeneratePrefixFileName() + System.IO.Path.GetFileName(e.FileName); 
    var relativePath = "~/Image/" + fileName; 
    var filePath = Server.MapPath(relativePath); 
    AsyncFileUpload1.SaveAs(filePath); 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "filePath", "top.$get(\"" + UploadedPathHiddenField.ClientID + "\").value = '" + ResolveClientUrl(relativePath) + "';", true); 
} 

之後,你可以通過獲得showConfirmation方法保存圖像的路徑:

var src = $get("<%= UploadedPathHiddenField.ClientID %>").value; 

....................... .................................................. ............................

protected void BtnUpload_Click(object sender, EventArgs e) 
{ 
    UploadMessage.Text = UploadedPathHiddenField.Value; 
} 
相關問題