2013-01-24 56 views
6

我試圖讓AjaxFileUpload -Control(用於ContentPage)工作。但它不會觸發OnUploadComplete服務器端的事件AjaxFileUpload不會觸發OnUploadComplete事件

我正在使用ControlToolkit的4.1.60919.0版本。我試過了我在互聯網上找到的所有東西。

這裏只需幾個步驟:

  • 添加ENCTYPE =「多部分/格式數據」方法=「POST」的形狀元件在我的母版
  • 嵌套的AjaxFileUpload與的UpdateMode一個UpdatePanel =總是
  • 嘗試事件UploadedComplete和OnUploadComplete,但仍維持在事件處理程序添加一個try-catch塊捕捉未知異常和打印ExceptionMessage到網站上的標籤,第二個
  • - >什麼都沒有發生
  • 帶(出)一個ThrobberImage試了一下...
  • 許多其他的竅門,沒有工作......

所以,我希望我們能夠在這個社區一起找到解決的辦法。我的繼承人標記:

<%@ 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> 

這是我隱藏:

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; 
    } 
} 
} 

請,如果您有任何想法,不要猶豫,讓我知道。我很困惑,因爲我認爲我只是在互聯網上找到的那個howtos ...

在此先感謝!

回答

0

考慮到AjaxFileUpload控制使用contextkey QueryString參數來檢測自己的回發。我相信你問題的原因是這個參數因重寫url而丟失。 我並不擅長應用路由,但在我看來,您需要在路由表中註冊contextkey參數,並調整AjaxControlToolkit來源以使用RouteData而不是Request.QueryString來檢索它的值。 點擊此鏈接瞭解更多信息:AjaxControlToolkit Source Code

+0

嗨,感謝您的建議。我只是嘗試了以下。我刪除了從RouteData-Collection中讀取LanguageCode的前兩行。 此後,我通過本機路徑打開了頁面(/Internals/NewDownload.aspx而不是/Internals/de/NewDownload.aspx),但問題仍然存在。這個事件並沒有被解僱...... :-( 只是順便說一句:這是爲了在這個網站上發佈一個答案作爲評論或作爲一個新的職位到我的問題? – Roland

+0

@Roland沒關係發表評論以回答另外,爲什麼認爲'UploadComplete'事件沒有被觸發?您是否試圖在'FileUpload_UploadComplete'方法開始設置斷點?需要警告,即使事件被觸發,DownloadLabel文本也不會在UploadComplete事件處理程序上更新 –

+0

I只有通過下載DownloadLabel才能測試它...爲什麼它不能更新? – Roland