关于ZAKER 融媒体解决方案 合作 加入

asp.net – AjaxFileUpload 不会触发 OnUploadComplete 事件

CocoaChina 11-16

我试图让 AjaxFileUpload-Control ( 在 ContentPage 中使用 ) 工作 . 但它不会在服务器端触发 OnUploadComplete 事件

我使用的是 ControlToolkit 版本 4.1.60919.0. 我已经尝试了我在互联网上找到的一切 .

这里只需几步:

> 在我的 MasterPage 中的 form-element 中添加了 enctype ="multipart / form-data"method ="post"

> 使用 UpdateMode = Always 将 AjaxFileUpload 嵌套到 UpdatePanel 中

> 尝试事件 UploadedComplete 和 OnUploadComplete, 但保持在第二个

> 在 EventHandler 中添加了 try-catch-block 以捕获未知异常并将 ExceptionMessage 打印到站点上的标签 – > 没啥事儿

> 尝试了 ( 出 ) 一个 ThrobberImage ……

> 许多其他不起作用的 tipps ……

所以 , 我希望我们能在这个社区中找到一个解决方案 . 继承我的加价:

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

这是我的 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; }}}

如果您有任何想法 , 请不要犹豫 , 让我知道 . 我很困惑 , 因为我认为我只是在互联网上找到的那些 howtos …

提前致谢!

最佳答案

考虑到 AjaxFileUpload 控件使用 contextkey QueryString 参数来检测自己的回发 . 我相信你发出的原因是这个参数在重写 url 的结果中丢失了 .

我不是应用路由的专家 , 但在我看来 , 你需要在路由表中注册 contextkey 参数并调整 AjaxControlToolkit 源以使用 RouteData 而不是 Request.QueryString 来检索它的值 .

查看此链接以获取更多信息:AjaxControlToolkit Source Code

以上内容由"CocoaChina"上传发布 查看原文
相关标签 事件

觉得文章不错,微信扫描分享好友

扫码分享