6

AjaxFileUpload-Control(ContentPageで使用)を機能させようとしています。OnUploadCompleteただし、サーバー側ではイベントは発生しません

4.1.60919.0ControlToolkitのバージョンを使用しています。私はインターネットで見つけたすべてを試しました。

ここにいくつかのステップがあります:

  • MasterPageのform-elementにenctype="multipart / form-data" method="post"を追加しました
  • UpdateMode=Alwaysを使用してAjaxFileUploadをUpdatePanelにネストします
  • イベントUploadedCompleteとOnUploadCompleteを試しましたが、2番目のイベントにとどまりました
  • 不明な例外をキャッチし、サイトのラベルにExceptionMessageを出力するために、EventHandlerにtry-catch-blockを追加しました->何も起こりませんでした
  • 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>

そしてこれは私の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;
    }
}
}

何かアイデアがありましたら、遠慮なくお知らせください。インターネットで見つけたハウツーでやったと思うので、とても混乱しています...

前もって感謝します!

4

1 に答える 1

0

AjaxFileUploadコントロールがcontextkeyQueryStringパラメーターを使用して自身のポストバックを検出することを考慮に入れてください。問題が発生した理由は、URLを書き換えた結果、このパラメータが失われたためだと思います。私はルーティングの適用に精通していませんが、私の意見では、ルーティングテーブルにcontextkeyパラメータを登録し、AjaxControlToolkitソースを微調整してRequest.QueryStringの代わりにRouteDataを使用して値を取得する必要があります。詳細については、次のリンクを確認してください:AjaxControlToolkitソースコード

于 2013-01-24T13:33:19.010 に答える