• 在加载aspx页面时,为引用的ascx当中的按钮添加事件,以方便调用aspx页面中的函数


    刚刚有个需求要改,在一个用户控件中添加一个上传文件的按钮,触发这个按钮的前提是需要验证用户的身份,这个判断事件是后台触发的,在引用它的aspx页面中也有类似的功能按钮,所以想到,在加载aspx页面后,再去创建这个按钮的事件,找了些资料,实现了这个功能,记录下。

    首先在用户控件中,定义一个属性来保存这个按钮属性,普通的Button就可以:

            public Button button
            {
                get { return button1; }//button1为此按钮的ID
            }

    但是我的用户控件的页面中,使用了一个Repeater,所以我在获取它的值时:

    调用的问题:当我在引用的aspx页面的page_load中直接去调用button时是可以的,但是直接调用这个属性是不可以的,此时,Repeater1.Items.Count的值是为0的
            public LinkButton InnerButton
            {
                get 
                { 
                    LinkButton lnkShow = (LinkButton)Repeater1.Items[0].FindControl("lnkShow");//获取上传按钮
                    return lnkShow;
                }
            }

    在引用了此按钮所在的用户控件的aspx页面中,在page_load事件中去获取它,并且为它绑定一个事件

      protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                   .............
                }
                else //我在这里的写法是如果页面回调的时候才去执行下面的操作,页面初始化时,是无法绑定控件当中的按钮事件的,我想这是页面生命周期的问题吧,以后再研究研究
                {  
                    if (string.IsNullOrEmpty(HidUser.Value.Trim()))//判断用户的权限,是否已经登录
                    {
                        //注册用户控件中的按钮事件
                        UCScenicCards.InnerButton.Click += new EventHandler(Login_Click);
                    }
                }
                }

     对了,还要写一个对应的Login_Click事件:

            protected void Login_Click(object sender, EventArgs e)
            {
                if (string.IsNullOrEmpty(HidUser.Value.Trim()))
                {
                    UserLogin();
                }
            }
  • 相关阅读:
    一行代码搞定图片缩放、旋转、加水印
    如何学习 Webpack
    Webpack 概念
    Webpack 入门
    asp.net core教程 (一)
    asp.net core教程 (二)
    ap.net core 教程(三)
    Grafana 安装配置
    zabbix-3.0.x LTS源码安装配置
    MariaDB Security
  • 原文地址:https://www.cnblogs.com/allen76615519/p/2506262.html
Copyright © 2020-2023  润新知