这是一个奇怪的问题。因此,我在更新面板中有一个名为 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 中没有获得价值?