我想让AjaxFileUpload
- Control(在ContentPage中使用)正常工作。但它不会在服务器端触发OnUploadComplete
事件
我正在使用ControlToolkit的版本4.1.60919.0
。我已经尝试了我在互联网上找到的一切。
这里只需几个步骤:
所以,我希望我们能在这个社区中找到一个解决方案。继承我的标记:
<%@ 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;
}
}
}
如果您有任何想法,请不要犹豫,让我知道。我很困惑,因为我认为我只是在互联网上找到的那些声音...
提前致谢!
答案 0 :(得分:0)
考虑AjaxFileUpload
控制使用contextkey
QueryString参数来检测自己的回发。我相信你发出的原因是这个参数在重写url的结果中丢失了。
我不是应用路由的专家,但在我看来,你需要在路由表中注册contextkey参数并调整AjaxControlToolkit源以使用RouteData而不是Request.QueryString来检索它的值。
请查看此链接以获取更多信息:AjaxControlToolkit Source Code