2013-01-24 8 views
6

sto cercando di ottenere che AjaxFileUpload -Control (utilizzato in ContentPage) funzioni. Ma non si attiva OnUploadComplete Evento lato serverAjaxFileUpload non attiva l'evento OnUploadComplete

Sto usando la versione 4.1.60919.0 di ControlToolkit. Ho provato tutto ciò che ho trovato su internet.

Qui, a pochi passi:

  • Aggiunto enctype = metodo "multipart/form-data" = "post" per la forma-elemento a mio MasterPage
  • annidata l'AjaxFileUpload in un UpdatePanel con UpdateMode = Sempre
  • eventi Provato UploadedComplete e OnUploadComplete, ma siamo stati al secondo
  • Aggiunto un try-catch-blocco nel EventHandler per intercettare le eccezioni sconosciute e stampare l'ExceptionMessage a un'etichetta sul sito -> non è successo niente
  • provato con (out) un ThrobberImage ...
  • Molti altri consigliato per questa materia che non ha funzionato ...

Quindi, spero che troveremo una soluzione insieme in questa comunità. Heres la mia marcatura:

<%@ Page Title="New Download" Language="C#" MasterPageFile="~/MasterPage.master"  AutoEventWireup="true" CodeFile="NewDownload.aspx.cs" Inherits="Internals_NewDownload" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> 

<ajax:ToolkitScriptManager ID="ToolkitscriptManager" runat="server"> </ajax:ToolkitScriptManager> 
<h1>Create a new Download</h1> 

     <ajax:AjaxFileUpload ID="FileUpload" runat="server" ThrobberID="ThrobberLabel" OnUploadComplete="FileUpload_UploadComplete" /> 
     <asp:Label ID="ThrobberLabel" runat="server" Style="display: none;"><img alt="UploadingPicture" title="Please wait while uploading..." src='<%= Constants.DomainString + "/Data/Images/loading-small.gif" %>' /></asp:Label> 
     <asp:Label ID="DownloadLabel" runat="server"></asp:Label> 

</asp:Content> 

E questo è il mio CodeBehind:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Internals_NewDownload : System.Web.UI.Page 
{ 
private string m_LanguageCode; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (RouteData.Values.ContainsKey("LanguageCode")) 
     m_LanguageCode = RouteData.Values["LanguageCode"].ToString(); 

    //if (IsPostBack) 
    // return; 
    if (!User.IsInRole("Administrator") && !User.IsInRole("Kunde") && !User.IsInRole("Mitarbeiter")) 
     Response.Redirect(Constants.DomainString + "/PermissionDenied.aspx"); 
    Session[Constants.NonGlobalizedString] = true; 
    Session[Constants.MenuInfoSession] = new ClsMenuInfo("NewDownload"); 
} 

protected void FileUpload_UploadComplete(object sender,  AjaxControlToolkit.AjaxFileUploadEventArgs e) 
{ 
    try 
    { 
     string filePath = "~/upload/" + e.FileName; 
     DownloadLabel.Text = filePath; 
    } 
    catch (Exception ex) 
    { 
     DownloadLabel.Text = ex.Message; 
    } 
} 
} 

Per favore, se avete qualche idea, non esitate a farmi sapere che. Sono molto confuso come penso che ho appena fatto in quel howto che ho trovato su internet ...

Grazie in anticipo!

risposta

0

Prendere in considerazione che AjaxFileUpload uso controllo contextkey Parametro QueryString per rilevare il proprio postback. Credo che il motivo del tuo problema sia che questo parametro ha perso il risultato dell'URL di riscrittura. Non sono esperto nell'applicazione del routing ma, a mio parere, è necessario registrare il parametro contextkey nelle tabelle di routing e modificare le origini di AjaxControlToolkit per utilizzare RouteData anziché Request.QueryString per recuperarlo. Controlla questo link per maggiori informazioni: AjaxControlToolkit Source Code

+0

Ciao, grazie per questo suggerimento. Ho appena provato il seguente. Ho rimosso le prime due righe che stanno leggendo il LanguageCode dalla RouteData-Collection. In seguito ho aperto la pagina tramite il percorso nativo (/Internals/NewDownload.aspx anziché /Internals/de/NewDownload.aspx), ma il problema esiste ancora. L'evento non viene licenziato ... :-( Just BTW: è pensato per pubblicare una risposta a questo sito Web come commento o come nuovo post alla mia domanda? – Roland

+0

@Roland è giusto pubblicare un commento per rispondere Inoltre, perché pensi che l'evento 'UploadComplete' non sia stato attivato? Hai provato a impostare il punto di interruzione nel metodo' FileUpload_UploadComplete'?? Attenzione, il testo 'DownloadLabel' non verrà aggiornato sul gestore di eventi UploadComplete anche se l'evento è stato attivato –

+0

I l'ho provato solo dando un'occhiata a DownloadLabel ... Perché NON dovrebbe essere aggiornato? – Roland