【问题标题】:HiddenField empty and Viewstate value null on Page_LoadPage_Load 上的 HiddenField 为空且 Viewstate 值为 null
【发布时间】:2014-10-17 20:59:37
【问题描述】:

这个问题是在按下按钮后试图让 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 即可调用。在Page_Load 中使用popup.ShowOnPageLoad = ShowPopup; 时,ViewState["ShowPopup"]null,因此它返回false

然后我尝试使用HiddenField。于是我把ShowPopup改成了:

bool ShowPopup
{
    get
    {
        return hfShowPopup.Value != "" && hfShowPopup.Value.ToLower() != "false";
    }
    set
    {
        hfShowPopup.Value = value.ToString();
    }
}

在单击按钮时再次使用ShowPopup = true,当Page_Load 中读取ShowPopup 时,其值为"",因此ShowPopupfalse

然后我尝试通过hfShowPopup.Value = "true"; 直接设置HiddenField 并使用

popupDuplicatePlayer.ShowOnPageLoad = hfShowPopup.Value != "" && hfShowPopup.Value.ToLower() != "false";

Page_Load 中,但hfShowPopup.Value 又是空的。

我在同一页面中使用了许多其他变量来读取/写入ViewState,它们工作正常。我知道ViewStateHiddenField 在页面生命周期的早期可能不存在,但在Page_Load 中使用,所以应该没问题吗?我还尝试在 Page_LoadComplete 中访问它们,但遇到了同样的问题。页面上没有UpdatePanels,所以这不是问题,还有其他原因吗?

我认为ViewStateHiddenField AND 直接设置的ShowOnPageLoad 的问题是相关的?

【问题讨论】:

  • 隐藏字段的标记是什么?
  • 隐藏字段是简单的asp.net控件<asp:HiddenField ID="hfShowPopup" runat="server" />,呈现为<input type="hidden" name="ctl00$ContentPlaceHolder1$hfShowPopup" id="ctl00_ContentPlaceHolder1_hfShowPopup" />

标签: asp.net popup devexpress viewstate hidden-field


【解决方案1】:

我犯了一个相当愚蠢的错误。在按下按钮时,我重定向到当前页面,而不是允许回帖。因此,Page_Load 上的值会丢失。很傻,但我还是想通了。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2015-04-06
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多