注册 登录
编程论坛 ASP.NET技术论坛

关于用户控件调用父页的方法问题

魔城侠客 发布于 2007-12-14 19:09, 3990 次点击
有一个用户控件,一个母版页
在用户控件里点击一个按钮后调用母版页里的一个方法,,如何实现??
11 回复
#2
冰彩虹2007-12-14 22:56
通过Page.MasterPage获取到模板页对象,public的方法应该可以访问到吧,试试看
#3
魔城侠客2007-12-15 12:36
母版页里包含一个用户控件,是用户控件的父页,那代码如何写呢?
#4
冰彩虹2007-12-16 00:14
母版页里包含一个用户控件,是用户控件的父页....没听明白
#5
魔城侠客2007-12-16 10:31
就是母版页里包含一个用户控件,
用户控件件想要调用母版页里的一个方法,要如何调用
#6
魔城侠客2007-12-20 14:33
顶一下
#7
lxd8242007-12-20 18:46
不知道你说的什么意思,母版页中的控件要用FindControl来得到,或者你可以试下传个值过去
(比如用QueryString 传)然后在写相关事件
#8
魔城侠客2007-12-21 14:04
这个是我在登陆的时候遇到的一个问题,一用户登陆后,登陆的界面就要隐藏起来,而这个隐藏工作是在母版页中进行的
登陆界面单独做成一个用户控件,然后一个母版页包含这个登陆的用户控件
在登陆用户控件中写代码,如果登陆成功则将session["user"]=1,否则就还是null
如果在登陆用户控件点击登陆button后,执行的顺序是先执行page_load(),而这个page_load的执行顺序是从外到内,也就是从普通页->母版页->用户控件,在执行page_load()完后,再执行button中的代码,这样,在点击button后,按照上面的顺序执行,session["user"]里的内容没改变之前,母版页中的判断是否要隐藏登陆界面已经判断过,所以需要点两次登陆才能将登陆界面隐藏起来,,,,,问题就在这里,希望在用户控件里点button后,再重新执行一次母版页里的判断是否隐藏的函数,,,,,,代码如下:
*****************************load.ascx.cs
protected void Button1_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                sql s = new sql();
                string str = "select * from Users where UserName='" + tbxuserName.Text + "'and UserPwd='" + tbxPwd.Text + "'";
                if (s.read(str).Read()) { Session["UserName"] = tbxuserName.Text; lblOut.Text = "登陆成功"; }
                else { lblOut.Text = "用户名或密码错误"; tbxuserName.Text = ""; }
            }
        }
***************************母版页
public void Page_Load(object sender, EventArgs e)
    {
        con();
    }
    public void con()               //在用户控件中点button后就想再调用这个函数
    {
        if (Session["UserName"] != null) { Load.Visible = false; Class.Visible = true;  }
    }
#9
lxd8242007-12-21 15:28
你在登陆成功后,加一个Response.Redirect("当前页面");就可以了!
(我试了下,当点确定2次后会出现想要的结果,估计是第一次确定,刷新页面只是初始化session,再点一次确定,才能将session传过去,而用Redirect就可以达到再一次刷新页面的效果!^_^(原因是我猜的,呵呵)
#10
魔城侠客2007-12-21 19:20
需要2次是因为他们的执行顺序的问题,,页的生存周期
我就想在同一个页面上进行用户控件的隐藏来达到目,不想跳到另一张页面上去
#11
lxd8242007-12-21 21:14
这里调用Response.Redirect是起重刷新本页面的作用,不是什么跳到别的页面,相当于js的self.reload()
#12
nic2007-12-21 22:03
DIM masterControl as control=me.master.findControl("name")
1