我正在用一个页面做一个asp.net应用程序。在此页面中,我定义了一个usercontrol。此用户控件有一个菜单(三个按钮)和3个用户控件。根据单击的按钮,三个用户控件中的一个变为可见的真或假。

在这三个用户控件中,我有一个按钮和一条消息,我想显示消息“它不是回发”当单击菜单按钮时,单击用户控件的按钮时,该消息将为“是,它是回发!!!”。

问题是使用属性“IsPostBack”用户控件或消息永远不会出现的页面“它不是回发”因为菜单的单击按钮显示嵌套的用户控件。

这是页面的结构:

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

我知道可以使用ViewState来完成,但有一种方法可以模拟IsPostBack属性或知道什么时候是真正的usercontrol回发?

感谢。

有帮助吗?

解决方案

我有解决这个问题的方法。当一个元素触发时,事件被发送到Request.Form集合中的服务器,所以我在嵌套的usercontrols中创建了一个属性,用于检查Request.Form集合中是否存在子控件(在usercontrol本身中定义):

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('

此代码可以是usercontrol的属性,或者,如果它被调用了很多次,则是在usercontrol的OnInit事件上设置的变量。

,'_')) return true; return false; } }

此代码可以是usercontrol的属性,或者,如果它被调用了很多次,则是在usercontrol的OnInit事件上设置的变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top