黑马程序员_同一页面使用用多次同一用户控件

“----------ASP.Net+Android+IOS开发、Net培训、期待与您交流!----------”

开发asp.net控件的时候,有时候需要为控件定义javascript方法,当页面加载该控件的时候,javascript方法也会一同被加载。但是这样有可能会产生一个问题,当页面中只包含该控件一次,那么不会产生问题,但是如果包含该控件多次,则可能产生javascript方法的调用问题。举一个例子,如下:

定一个控件:userControl.ascx,该控件的作用就是当选中checkbox时,会显示div中的"Hello!",反之则隐藏。

1.新建一个用户控件webUserControl.ascx

 前端

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="webUserControl.ascx.cs" Inherits="UserControls_webUserControl" %>
<asp:CheckBox runat="server" ID="checkBox1" Text="ShowHello" />
<div id="divShow" style="display:none;" runat="server">
Hello!
</div>

后端

  protected void Page_Load(object sender, EventArgs e)
    {

        /*
         无需检查以前是否已经注册过了
         客户端脚本由它的键和类型唯一标识。具有相同的键和类型的脚本被视为重复脚本。只有使用给定的类型和键对的脚本才能使用该页面进行注册。试图注册一个已经注册的脚本不会创建重复的脚本。
         很明白的
         如果你
         RegisterClientScriptBlock(this.getType(),"myjs","脚本内容");
         两次执行该代码,并不会输出两次脚本
         因为两次执行时this.getType()和"myjs"是没有改变的
        */
        string script = "<script src='js/JScript.js'></script>";//路径???(有待解决)
        Page.ClientScript.RegisterStartupScript(this.GetType(), "myjs", script);

        string ckb = this.ClientID + "_checkBox1";
        string div = this.ClientID + "_divShow";
        checkBox1.Attributes.Add("onclick", "showDiv('"+ckb+"','"+div+"')");
    }

新建一个js文件

function showDiv(ckb, div) {
    var checkBox = document.getElementById(ckb);
    var div = document.getElementById(div);
    if (checkBox.checked == true) {
        div.style.display = "";
    }
    else {
        div.style.display = "none";
     }
 }

新建一个aspx页面用于测试

<body>
    <form id="form1" runat="server">
    <div>
   <p> <uc:webUserControl runat="server" id="ucwebUserControl"></uc:webUserControl></p>
   <p> <uc:webUserControl runat="server" id="WebUserControl1"></uc:webUserControl></p>
   
    </div>
    </form>
</body>


执行结果:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值