代码之家  ›  专栏  ›  技术社区  ›  Amanda Kitson

如何在不使用viewstate的情况下跨回发保存复合控件的值

  •  0
  • Amanda Kitson  · 技术社区  · 16 年前

    此外,此键是在第一次加载控件时生成的,但在第一次加载之后不应再次更改。

    我怎样才能做到这一点?

    我尝试使用私有字段,然后在构造函数中检查Page.I s postback,如果它不是postback,我将为私有字段分配一个值,但在随后的postback中,它会丢失它的值,我无法在Page.IsPostback中重新分配它,因为它是自动生成的GUID。

    这一定是以前人们不得不做的事。。。。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Andrew Barber Eric Lafortune    16 年前

    在控制构建期间根本没有很多可用的状态信息,所以这可能很困难。有什么原因不能将访问缓存信息的代码移到控件的Init事件中吗?

    我假设您不能使用Session,因为存储的信息与特定的请求/回发有关。如果不是特定于该请求,那么使用Session可能是一种可能性,但我认为在生命周期的早期处理控制状态时可能会遇到其他问题。


    另外,顺便问一下,您确定确实需要缓存此数据吗?最终可能会占用大量服务器内存。

        2
  •  0
  •   adrianos    16 年前

    你试过了吗 Session ?

    您可以为一个特定用户在会话对象中存储任何您喜欢的内容,从而在回发之间保持值/对象。

    如果您想在全球范围内而不是按用户存储,请尝试 Application

        3
  •  0
  •   CodexArcanum    16 年前

    虽然这不是最好的解决方案(重新排列逻辑以适应生命周期模型通常是这样),但是您是否尝试过直接访问请求?我曾经非常想在生命周期的早期从下拉列表中获取所选的值,以便可以调整建筑中的某些元素,我这样做了:

    myDropDownList.SelectedValue = Page.Request.Form[myDropDownList.UniqueID];
    

    推荐文章