2

这是一个奇怪的问题。因此,我在更新面板中有一个名为 AsyncFileUpload 的 Ajax Toolkit 文件上传器。这个 AsyncFileUpload 控件,只要你把一个文件放在那里,就开始上传它并调用服务器。然后,我将此文件存储为 BLOB,并使用 SELECT @@IDENTITY 从数据库表中获取行 ID。到目前为止一切顺利,我现在有一个行 ID,我希望存储它。我把它放在一个隐藏字段中,但是当 AsyncFileUpload 调用 OnClientUploadComplete 时,隐藏字段是空白的!所以我想“好吧,我将它存储在 ViewState 中”。令我惊讶的是,同样的事情发生了。视图状态被清除。最后,我成功使用了 Session 变量。我的问题是,为什么 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