0

Asp.NetAjaxFileUploadコントロールを使用して非表示フィールドに非同期的に値を代入しようとしていますが、アクセスすると null 値が返されます。

<Ajax:AjaxFileUpload ID="FileUploadGaurdianPic" runat="server"
    ThrobberID="myThrobber"  MaximumNumberOfFiles="1"
    OnUploadComplete="FileUploadGaurdianPic_UploadComplete" OnClientUploadComplete="uploadComplete" />

コード;

public string GuardianPic
{
    get 
    { 
        if (ViewState["GuardianPic"] == null)
            return "/Resources/Images/generic.jpg"; 
        else
            return ViewState["GuardianPic"].ToString(); 
    }
    set 
    {
        ViewState["GuardianPic"] = value; 
    }
}

protected void FileUploadGaurdianPic_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    string path = Server.MapPath("~/Resources/Images/temp/");
    string name = String.Empty;
    string storedPath = String.Empty;
    if (Directory.Exists(path))
    {
        name = Path.GetFileName(e.FileName);
        storedPath = path + name;
        FileUploadGaurdianPic.SaveAs(storedPath);
        GuardianPic = "/Resources/Images/temp/"+name; // assigning the value here
    }
}

しかし、アクセスしようとすると:

string ur = GuardianPic;

アップロード完了イベントで割り当てている値ではなく、プロパティのデフォルト値を取得します。

4

1 に答える 1

3

パーシャルポストバック(Ajax Control Troolkit)は通常、サーバー上でページ全体をレンダリングしますが、変更のみをクライアントに送信します。Javascriptマジックにより、ViewState(非表示のHTMLフィールドに埋め込まれている)を含むページの部分的な更新が行われます。

フォームの投稿とファイルのアップロードが異なるため、AsyncFileUploadコントロールはこのようには機能しません。

実際、あなたが説明する振る舞いは、CodeplexでのACTの問題への対応で説明されています。

簡単な答え:これはできません。

于 2013-03-09T09:14:57.367 に答える