2

サイトに AjaxUploadControl 機能を実装しようとしていますが、OnUploadComplete メソッドが起動しません。代わりに、ファイルが 100% アップロードされたと単に表示されますが、ファイルは指定されたフォルダーにありません。OnUploadComplete メソッドにブレークポイントを設定し、このメソッドに到達していないことを確認できました。[キャンセル] ボタンが表示されると無限ループに陥っているように見えますが、ファイルをアップロードしようとすると、画面上のどのボタンもクリックできなくなります。

.aspx ページ:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
    <div>
            <ajaxToolkit:AjaxFileUpload ID="ajaxUpload1" runat="server" OnUploadComplete="ajaxUpload1_OnUploadComplete" />
    </div>
    </form>
</body>
</html>

コードビハインド ファイル:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AjaxTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void ajaxUpload1_OnUploadComplete(object sender,   AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        string filePath = "~/SiteImages/" + e.FileName;
        ajaxUpload1.SaveAs(MapPath(filePath));
    }
}

助けていただければ幸いです。

4

5 に答える 5

1

あなたが抱えていた実際の問題は、web.config に HTTP ハンドラーが必要だったことです。

<httpHandlers>
    <add verb="*" path="AjaxFileUploadHandler.axd"
      type="AjaxControlToolkit.AjaxFileUploadHandler, 
      AjaxControlToolkit"/>
</httpHandlers>

私はまったく同じ問題(アップロード時の赤いエラー、.csファイルのイベントがまったく発生しない)を抱えていましたが、それをweb.configに追加することで解決しました

于 2014-02-19T15:45:11.543 に答える
1

プロパティはOnClientUploadCompleteではなくOnUploadCompleteです。

これを参照してください。

イベント

UploadedComplete - ファイルが正常にアップロードされたときにサーバーで発生します。このイベントでは、AjaxFileUploadEventArgs のインスタンスが、ファイル名、サイズ、およびコンテンツ タイプを含む引数で渡されます。

于 2012-11-19T16:15:14.757 に答える
1

正しい enctype とメソッドを設定しないと、UploadedComplete は起動しません。 enctype="multipart/form-data"を form タグに追加してみてください。 ここに画像の説明を入力 例えば

<form id="form1" runat="server" enctype="multipart/form-data" method="post">

コードビハインド:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    string filePath = "~/SiteImages/";
    AjaxFileUpload1.SaveAs(MapPath(filePath + System.IO.Path.GetFileName(e.FileName)));
}

インライン コード:

<form id="form1" runat="server" enctype="multipart/form-data" method="post">
      <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
            onuploadcomplete="AjaxFileUpload1_UploadComplete" />   
    </div>
    </form>

それが役に立てば幸い。

于 2012-11-19T16:15:26.963 に答える
0

私が抱えている問題を発見しました。私は、Web アプリではなく Web サイトに機能を実装しようとしていました。テスト Web アプリ プラットフォームを作成しましたが、問題なく動作しました。私は AJAX の初心者であり、これが問題を引き起こすことに気づいていませんでしたが、この機能を Web サイトで動作させるための解決策を知っている人はいますか? 現時点では、Web アプリに簡単に移植するには多すぎると思います。

于 2012-11-19T22:19:54.813 に答える