ASP.NET AsyncFileUpload RegisterClientScriptBlock не работает

У меня проблема с работой ScriptManager's RegisterClientScriptBlock, который не работает.

У меня есть AsyncFileUpload, и я хочу динамически предварительно просмотреть загруженное изображение после загрузки.

UploadedComplete подключен к Page_Init, а вот код блока UloadedComplete на стороне сервера

void fileUpload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    string csb = string.Empty; 
    string tempfolder = "picserver/posts/temp/" + Session["Username"] + "_" + DateTime.Today.ToString("yyyy_MM_d") + ".jpg";
    string newfile = Server.MapPath(tempfolder);

    fileUpload.SaveAs(newfile);

    Byte[] f = File.ReadAllBytes(newfile);
    Imaging i = new Imaging();
    i.ResizeImageFile(newfile, newfile, 64);

    csb = "$(\"" + postImagePreview.ClientID + "\").innerHTML = '<img src=\"" + tempfolder + "\" alt=\"\" />'";
    System.Diagnostics.Debug.WriteLine("CSB: " + csb);
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "preview", csb, true);
}

а вот HTML

<asp:Label ID="postImagePreview" runat="server" />
Upload a preview of your advertisement.
<asp:AsyncFileUpload ID="fileUpload" runat="server" UploaderStyle="Traditional" UploadingBackColor="#CCFFFF" ThrobberID="myThrobber" /> <asp:Label runat="server" ID="myThrobber" style="display:none;" ></asp:Label>

вот мой ScriptBlock

csb = "$(\"" + postImagePreview.ClientID + "\").innerHTML = '<img src=\"" + tempfolder + "\" alt=\"\" />'";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "preview", csb, true);

и он не работает .. даже если я поставлю "alert ('hello');" в параметре скрипта. все еще не работает.

вы, ребята, знаете, почему?


person jaysonragasa    schedule 03.09.2010    source источник
comment
Я получаю это на выходе после того, как элемент управления загрузил файл. Первое случайное исключение типа 'System.Threading.ThreadAbortException' произошло в mscorlib.dll Исключение типа 'System.Threading.ThreadAbortException' произошло в mscorlib.dll, но не было обработано в код пользователя   -  person jaysonragasa    schedule 04.09.2010
comment
МОЙ БОГ. args.get_path (); возвращает C: \ fakepath \ uploadedfile.ext - FAKEPATH!?!   -  person jaysonragasa    schedule 04.09.2010


Ответы (1)


Это вызвано ошибкой в ​​текущей версии элемента управления AsyncFileUpload. По сути, он очищает содержимое, записывает элемент управления, а затем завершает запрос. Это предотвращает рендеринг блока скрипта. Более подробную информацию и обходной путь можно найти в системе отслеживания ошибок AJAX Control Toolkit.

person Robert Clark    schedule 10.11.2010