我有一个 aspx 页面,它有一个 div 控件 id="mainblock"
我创建了一个用户控件,它根据登录页面动态检索一个值。
我必须将此值作为 id 传递给 div id="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
请帮忙
最佳答案
您不能从代码隐藏中更改 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 4。
关于javascript - 如何从用户控件更新控件的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290386/