我相信你保存文件路徑,我不能更改UI會議以錯誤的方式,它是無法識別哪裏是沒有代碼中的錯誤。 一路,更好我認爲不會持續文件路徑會話,但使用客戶端用於這一目的,而不是,你可以添加兩個隱藏字段DesignUploader.ascx控件並設置它們的值s在UploadedComplete
事件處理程序中。
public partial class DesignUploader : System.Web.UI.UserControl
{
private static readonly string AppDataPath = HttpContext.Current.Server.MapPath("~/App_Data/");
public string FirstFilePath
{
get
{
return Server.UrlDecode(FirstFilePathHiddenField.Value);
}
}
public string SecondFilePath
{
get
{
return Server.UrlDecode(SecondFilePathHiddenField.Value);
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
FirstFileUpload.UploadedComplete += FirstFileUpload_UploadedComplete;
SecondileUpload.UploadedComplete += SecondileUpload_UploadedComplete;
}
void FirstFileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
var fullPath = Path.Combine(AppDataPath, Path.GetFileName(e.FileName));
FirstFileUpload.SaveAs(fullPath);
SaveFilePathToHiddenField(FirstFilePathHiddenField.ClientID, fullPath);
}
void SecondileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
var fullPath = Path.Combine(AppDataPath, Path.GetFileName(e.FileName));
SecondileUpload.SaveAs(fullPath);
SaveFilePathToHiddenField(SecondFilePathHiddenField.ClientID, fullPath);
}
private void SaveFilePathToHiddenField(string fieldId, string pathValue)
{
var script = string.Format("top.$get('{0}').value = '{1}';", fieldId, Server.UrlEncode(pathValue));
ScriptManager.RegisterStartupScript(this, this.GetType(), "setPath", script, true);
}
}
謝謝回答。 是如你所說,我試圖存儲的文件路徑onfileuploaded事件的這種方式,但是當我在服務器端設置的隱藏字段onFileUploaded事件hiddenfield不更新/套和這就是爲什麼我使用的會話,現在存儲作爲替代 我因爲我離開了我的工作場所,所以無法發佈代碼。因爲你提出了一個自定義事件,我還沒有嘗試過這種方式。我會嘗試並讓你知道 – Devjosh 2012-04-22 11:19:20
我的代碼中沒有自定義事件。 「UploadedComplete」事件處理程序中的隱藏字段值不能異步執行。但是您可以在其中註冊JavaScript來更新客戶端上的隱藏字段值。在提議的代碼中使用這種情況。請注意,由於AsyncFileUpload在框架中執行,您必須在父框架中調用'$ get'功能。 – 2012-04-22 11:35:00
OK @yuriy我會嘗試這一點,並讓你知道明天再次感謝 – Devjosh 2012-04-22 15:10:19