尝试按下按钮后显示DevExpress ASPxPopupControl
时,就会出现此问题。使用popup.ShowOnPageLoad = true;
似乎不够,检查Page_Load
上的值会显示它恢复为false
,即使服务器上的代码已经执行完毕。
所以我决定使用一个可以读取和写入ViewState
的变量,因此它会持续存在。然后我有变量:
bool ShowPopup
{
get
{
if (ViewState["ShowPopup"] == null)
return false;
return (bool)ViewState["ShowPopup"];
}
set
{
ViewState["ShowPopup"] = value;
}
}
只需按ShowPopup = true
即可按下按钮。在popup.ShowOnPageLoad = ShowPopup;
中使用Page_Load
时,ViewState["ShowPopup"]
为null
,因此会返回false
。
然后我尝试使用HiddenField
。所以我将ShowPopup
更改为:
bool ShowPopup
{
get
{
return hfShowPopup.Value != "" && hfShowPopup.Value.ToLower() != "false";
}
set
{
hfShowPopup.Value = value.ToString();
}
}
再次点击按钮时使用ShowPopup = true
,在ShowPopup
中读取Page_Load
时,其值为""
,因此ShowPopup
为false
HiddenField
然后我尝试通过hfShowPopup.Value = "true";
直接设置popupDuplicatePlayer.ShowOnPageLoad = hfShowPopup.Value != "" && hfShowPopup.Value.ToLower() != "false";
并使用
Page_Load
<{1>}中的,但hfShowPopup.Value
再次为空。
我在同一页面中使用了许多其他变量读取/写入ViewState
,它们工作正常。我知道ViewState
和HiddenField
可能在页面生命周期的早期不存在,但在Page_Load
中使用了,所以应该没问题?我还尝试在Page_LoadComplete
中使用相同的问题访问它们。页面上没有UpdatePanel
,所以这不是问题,还有其他原因吗?
我认为直接设置ViewState
,HiddenField
AND ShowOnPageLoad
的问题是否相关?
答案 0 :(得分:0)
来自我的相当愚蠢的错误。在按钮按下我重定向到当前页面,而不是允许回发。因此,Page_Load
上的值会丢失。非常愚蠢,但无论如何我都明白了。