加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:45:01 所属栏目:asp.Net 来源:网络整理
导读:我试图让AjaxFileUpload-Control(在ContentPage中使用)工作.但它不会在服务器端触发OnUploadComplete事件 我使用的是ControlToolkit版本4.1.60919.0.我已经尝试了我在互联网上找到的一切. 这里只需几步: 在我的MasterPage中的form-element中添加了enctype =
我试图让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" 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>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读