我有一个托管在内容占位符中的用户控件。
这只是一个场景,但用户控件在整个网站上被使用。
用户控件负责生成JSON请求,令我恐惧的是,我注意到表单元素id的名称不是我所谓的 - 而是以controlID_ContentPlaceHolderID_UserControl_MyActualFormElementName
为前缀我知道如果我使用.net v4,我可以关闭它,但项目是v2。
请告诉我如何在后面的代码中获取控制路径,我的意思是动态确定ctl00_ContentPlaceHolder_UserControlID部分。
然后我可以创建另一个表单元素 - >通过名称发布 - >然后服务器端发布后,知道我的表单元素是什么。
提前致谢。
答案 0 :(得分:3)
只要您在javascript中引用控件,就应该只使用CliendID
。
ClientID。它存在于每个Web控件中。
当Web服务器控件呈现为HTML元素时,id HTML元素的属性设置为ClientID的值 属性。 ClientID值通常用于访问HTML元素 在客户端脚本中使用document.getElementById方法。
它结合了父控件的名称,为javascript中的元素生成唯一的id。
答案 1 :(得分:1)
从我的头顶,没有测试,给定的用户控件递归地找到父链中的第一个控件,在返回行程中,为每个ClientId建立“路径”;
public string ClientIdPath(Control ctl)
{
if (ctl.Parent !=null )
{
return = string.Format("{0}_{1}", ClientIdPath(ctl.Parent), ctl.ClientId );
}
else
{
return ctl.ClientId;
}
}