首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewState、UserControl和IsPostback

ViewState、UserControl和IsPostback
EN

Stack Overflow用户
提问于 2009-02-28 00:46:27
回答 4查看 5.3K关注 0票数 1

基本上,我有一个下拉列表和一个动态添加的用户控件。用户控件根据在下拉列表中所做的选择加载网格视图。下拉列表不是用户控件的一部分。

现在,问题是,每次用户更改下拉列表中的选择时,我如何模拟(isControlPostback = false)?看起来ViewState还记得这个控件。

在我的用户控件中,我有:

代码语言:javascript
复制
protected bool IsUserControlPostBack
{
    get
    {
        return this.ViewState["IsUserControlPostBack"] != null;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsUserControlPostBack)
    {
        ViewState.Add("IsUserControlPostBack", true);
        //load stuff in the grid view and bind it
    }
}

当用户更改下拉列表中的选择时,我有一个javascript确认框,页面会回发。因此下拉列表的OnSelectedIndexChanged事件不会被触发。每次选择的索引发生变化时,我想移除来做类似的事情: ViewState.Remove("IsUserControlPostBack");

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-02 20:53:21

对于任何有兴趣知道答案的人来说:我最终在用户控件中实现了一个公共属性,并在服务器下拉列表SelectedIndexChanged事件而不是OnInit中加载了该控件。这消除了显式使用视图状态的需要。

票数 0
EN

Stack Overflow用户

发布于 2009-02-28 08:59:34

您可以在prerender事件中对控件进行更改。当此事件被激发时,所有其他操作都会执行。或者,您可以在用户控件中使用公共属性,并在需要设置值时对其做出相应的反应。

票数 1
EN

Stack Overflow用户

发布于 2009-03-01 23:16:31

您在用户控件中访问的ViewState与在页面上访问的one不同。如果您需要页面与用户控件进行通信,我建议您为此目的在用户控件上添加一个公共方法。

如果由于某种原因,您更喜欢与ViewState方法类似的方法,可以尝试Context.Items。注意,在请求之间不会保留Context.Items。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/597226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档