2

これは奇妙なものです。そのため、更新パネルに AsyncFileUpload という Ajax Toolkit ファイル アップローダーがあります。この AsyncFileUpload コントロールは、そこにファイルを配置するとすぐにアップロードを開始し、サーバーを呼び出します。次に、このファイルを BLOB として保存し、SELECT @@IDENTITY を使用してデータベース テーブルから行 ID を取得します。これまでのところ、行 ID があり、それを保存したいと考えています。非表示フィールド内に配置しましたが、AsyncFileUpload が OnClientUploadComplete を呼び出すと、非表示フィールドは空白です! それで、「よし、ViewStateに保存するだけだ」と思いました。驚いたことに、同じことが起こりました。ビューステートがクリアされます。最後に、セッション変数の使用に成功しました。私の質問は、なぜ Session 変数が機能し、ViewState または HiddenField が機能しないのですか?

フロント:

<script type="text/javascript">
    function UploadComplete(sender, args) {
        var fileSize = args.get_length();
        if (fileSize > 2000000) {
            alert("Logo size must be smaller than 2MB");
        }

        $("[id*=hfUploadSuccessful]").val("1");
        //Calls a postback and thus lvMembers_PreRender gets executed to get results
        __doPostBack('<%=UpdatePanel1.ClientID %>', null);
    }
</script>

                                    <div id="divClassFileUpload">
                                        <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" Width="350" CssClass="FileUploadClass floatLeft"
                                            UploaderStyle="Modern"
                                            CompleteBackColor="Lime"
                                            ErrorBackColor="Red"
                                            ThrobberID="Throbber"
                                            UploadingBackColor="#66CCFF"
                                            OnClientUploadError="uploadError" 
                                            OnClientUploadStarted="StartUpload"
                                            OnClientUploadComplete="UploadComplete"
                                            OnUploadedComplete="AsyncFileUpload1_UploadedComplete" />
                                    </div>

戻る:

    protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {

            //hfSelectedArticleId.Value = dt.Rows[0]["ArticleId"].ToString());
            //ViewState.Add("ArticleId", dt.Rows[0]["ArticleId"].ToString());
            Session.Add("ArticleId", dt.Rows[0]["ArticleId"].ToString());

        }

編集:それを説明する同様の投稿を見つけました。みんなありがとう! C# を使用して asp.net の Viewstate で値を取得できませんか?

4

0 に答える 0