如何从usercontrol更新控件的ID

时间:2013-11-29 16:54:38

标签: javascript asp.net user-controls

我有一个aspx页面,它有一个div控件id =“mainblock”

我创建了一个usercontrol,它根据着陆页动态检索一个值。

我必须将此值作为id div div div =“mainblock”传递,以便将其ID更改为值。

我正在尝试很多东西,但根本无法工作。

首先,我尝试在用户控件中编写服务器端代码,以便像这样更新

 protected void Page_Load(object sender, EventArgs e)
    {
     divid = dynamicid();

        var control = this.Page.FindControl("mainblock");
        if (control != null)
        {
            control.ID = divid.ToString();                
        }
       }

这不会改变父页面中DIV的ID。

我尝试使用javascript,以便从用户控件的控件中复制innertext并更新当前页面控件ID,如下所示

 <script type="text/javascript">
    document.getElementById('mainblock').id = document.getElementById('<%=   usercontrolidvalue.ClientID %>').innerText;
    </script>

这给了我这个错误..  只有内容控件才能直接包含在包含内容控件的内容页面中。

有没有办法可以从usecontrol

更新控件的当前id

任何帮助,请

1 个答案:

答案 0 :(得分:0)

您无法从代码隐藏更改ID的值。但是,您可以从aspx代码设置客户端ID。

你有一组有限的id值吗?然后你可以在aspx中这样做:

<div runat="server" clientidmode="Static" id="div1">one</div>
<div runat="server" clientidmode="Static" id="div2">two</div>
<div runat="server" clientidmode="Static" id="div3">three</div>
<div runat="server" clientidmode="Static" id="div4">four</div>

然后从你的代码隐藏中设置你需要的可见性:

//Condition...
div1.Visible = false; //will not render
div2.Visible = false; //will not render  
div3.Visible = false; //will not render
div4.Visible = true; //the only one shown

这将在输出HTML中仅留下div。