2

我有一个托管在内容占位符中的用户控件。

这只是一种情况,但用户控件在整个站点中都得到了使用。

用户控件负责生成 JSON 请求,令我惊恐的是,我注意到表单元素 ID/名称不是我所说的 - 而是以 controlID_ContentPlaceHolderID_UserControl_MyActualFormElementName 为前缀

我知道如果我使用的是 .net v4,我可以将其关闭,但该项目是 v2。

请告诉我如何在后面的代码中获取控制路径,我的意思是动态确定 ctl00_ContentPlaceHolder_UserControlID 部分。

然后我可以创建另一个表单元素->通过名称发布->然后在发布后的服务器端,知道我的表单元素是什么。

提前致谢。

4

2 回答 2

3

CliendID仅当您在 javascript 中引用控件时才应使用。

javascript中控件名称中的ClientID。它存在于每个 Web 控件中。

当 Web 服务器控件呈现为 HTML 元素时,HTML 元素的 id 属性设置为 ClientID 属性的值。ClientID 值通常用于通过 document.getElementById 方法访问客户端脚本中的 HTML 元素。

它结合了父控件的名称来为javascript中的元素生成一个唯一的id。

于 2012-08-20T07:55:45.463 回答
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;
     }
}
于 2012-08-20T07:50:06.587 回答