【问题标题】:ViewState on control inside page header页眉内控件上的 ViewState
【发布时间】:2011-09-21 21:32:10
【问题描述】:

我正在将我的 js 文件添加到代码隐藏的标题中,如下所示:

protected void Page_PreRender(object sender, EventArgs e)
{
        if (!IsPostBack)
        {
            HtmlGenericControl js = new HtmlGenericControl("script");
            js.Attributes["type"] = "text/javascript";
            js.Attributes["src"] = "/js/jquery.js";
            js.ID = "jquery";
            js.EnableViewState = true;
            Page.Header.Controls.Add(js);
        }
}

这在页面加载时效果很好,但是我在回发时丢失了我的 js,我希望我的控件在启用 HtmlGenericControl 的 ViewState 后仍然存在......

有什么方法可以将 ViewState 保留在标题上,还是我必须删除 if (!IsPostBack) 条件才能每次都添加 js?

【问题讨论】:

  • P.S.无论如何,除了我下面的答案之外,这肯定不是在 aspx 页面中包含 jquery 的常用方法!
  • 我知道这并不常见,但由于动态目的我需要,某些 js 文件应该包含在某些 jquery 插件中,但它们之前可能会被另一个插件包含
  • 那么您应该使用脚本管理器或以正确的方式进行操作:)

标签: c# asp.net webforms header viewstate


【解决方案1】:

您的控件是动态添加的,只有在!IsPostBack 时,ViewState 才能保留值和状态,但该控件必须在页面上单独存在。

在您的情况下,回发后不会添加控件,因此即使 ViewState 包含其状态,也没有控件可以附加此状态。

【讨论】:

  • 我尝试使用占位符或将 js 文件附加到我的母版页标题内容但没有成功,所以标题上似乎根本没有 Viewstate
猜你喜欢
  • 1970-01-01
  • 2014-08-02
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2011-03-17
相关资源
最近更新 更多