1

ajaxcontroltoolkit から使用している asyncfileupload コントロールがあります。コード ビハインドで完成したファイルに対して、ファイルを処理し、ファイル内の情報をデータベースに書き込みます。データベースからレコードの ID を取得します。これを ASP 隠しフィールドに書き込む必要があります。値を設定してみました:

fldImageID.Value = pimg.IdImageGroup.ToString();

ウェブサイトの例で見たようなスクリプトを登録しようとしました:

  ScriptManager.RegisterClientScriptBlock(
         ImageFileUploader, 
         ImageFileUploader.GetType(), 
         "script1",
       "alert('hi'); top.document.getElementById('" 
       + fldImageID.ClientID 
         + "').value='" 
       + pimg.IdImageGroup.ToString() 
       + "'; top.document.getElementById('" 
     + lblError.ClientID 
        + "').innerHTML = 'image uploaded'",
   true);

アップロードされたファイルを処理するように設定したメソッドからの response.Write 呼び出しに javascript を埋め込んでみました。私がこれまでに行ったことは何もありません。すべてを行った後、非表示フィールドにはまだ必要な値が含まれていません。

4

3 に答える 3

3

これは非常に簡単jQueryです。入力コントロールではなく、HTML 隠し入力コントロールをページに配置しますasp:hidden"hiddenPhoto"クラスを追加して、HTML隠しコントロールに言ってみましょう。

コントロールhtmlがこのようなものだとしましょう

<input type="hidden" class="hiddenPhoto" runat="server" id="hdPhotoName" />

OnClientUploadCompletejs メソッドでクラス セレクターを使用してアクセスし、その値を設定します。runat="server"サーバー側でその値にアクセスするために宣言します。

よろしく

于 2011-08-13T01:26:59.903 に答える
0

これに取り組んでいたときに、許容できる解決策を見つけました。それ以来、同じ問題を抱えていて、解決策を見つけたかどうかを尋ねてきた人々から電子メールを受け取りました. だから私はそれをここに提示し、余分なコードを取り除きます:

FileUpload コントロールを持つユーザー コントロールから、まず FileUploadComplete ハンドラーの裏側にセッション変数を設定します。

* ascx ファイル (upload_chart.ascx) に AsyncFileUpload があります。重要なのは OnUploadComplete と OnClientUploadComplete です:*

<ajaxToolkit:AsyncFileUpload 
         OnUploadedComplete="FileUploadComplete1" 
         OnClientUploadComplete="UploadComplete1" 
         ID="ImageFileUploader" 
         runat="server" />

* ascx ファイル (upload_chart.ascx.cs) の分離コードで、FileUploadComplete を処理します:*

public void FileUploadComplete1(object sender, EventArgs e)
{

    try
    {
        if (ImageFileUploader.FileBytes.Length > 0)
            {

                // File data is in ImageFileUploaded.FileBytes
                    // Save it however you need to
                // I saved it to a database, in a DBImage Object class I created
                    // DBImage is specific to my application
                    ODS.Entity.DBImage pimg = 
                        ODS.Data.DataRepository.SaveImageBytes(ImageFileUploaded.FileBytes);
                    // Set the ImageID1 in the session
                Session["ImageID1"] = pimg.IdImageGroup.ToString();
            }
            else
            {
                //  error handling for an empty file, however you want to handle it

            }
    }
    catch (Exception Ex)
    {
        //  error handling for an unhandled exception, whatever you want to do here

    }
}

JavaScript とスクリプト メソッドを使用して、ページに値を設定します。スクリプト メソッドの分離コードは次のとおりです。

 // on the aspx page code behind (chartofthedayadmin.aspx.cs) I have the webmethod:

   [System.Web.Services.WebMethod]
    public static string GetImageID1()
    {
        System.Web.SessionState.HttpSessionState Session = System.Web.HttpContext.Current.Session;
        String retval = Session["ImageID1"].ToString();
        Session["ImageID1"] = null;
        return retval;
    }

// aspx フロント エンド (chartofthedayadmin.aspx) には、Web メソッドを呼び出すための // JavaScript があり、javascript の失敗メッセージは次のとおりです。

function UploadComplete1() {
         var str = PageMethods.GetImageID1(uploadSuccess1, uploadFailed);
     }
    function uploadFailed() {

        alert('error occurred or some meaningfull error stuff');
   }

*// 非表示フィールドの値を設定するためのユーザー コントロール (upload_chart.ascx) の JavaScript *

 function uploadSuccess1(result) {

    document.getElementById('<%= fldImageID.ClientID %>').value = result;

}

注: scriptmanager に EnablePageMethods="true" があることを確認してください。

于 2011-01-27T21:50:16.633 に答える