6

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

我正在使用4.1.60919.0ControlToolkit 的版本。我已经尝试了我在互联网上找到的所有东西。

这里只需几个步骤:

  • 在我的 MasterPage 中的表单元素中添加了 enctype="multipart/form-data" method="post"
  • 使用 UpdateMode=Always 将 AjaxFileUpload 嵌套到 UpdatePanel
  • 尝试了事件UploadedComplete和OnUploadComplete,但停留在第二个
  • 在 EventHandler 中添加了一个 try-catch-block 以捕获未知异常并将 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中做了......

提前致谢!

4

1 回答 1

0

考虑到该AjaxFileUpload控件使用contextkeyQueryString 参数来检测自己的回发。我相信你问题的原因是这个参数在重写 url 的结果中丢失了。我不是应用路由的专家,但我认为您需要在路由表中注册 contextkey 参数并调整 AjaxControlToolkit 源以使用 RouteData 而不是 Request.QueryString 来检索它的值。检查此链接以获取更多信息:AjaxControlToolkit 源代码

于 2013-01-24T13:33:19.010 回答