如何获取用户控件的控件路径属性?

时间:2012-08-20 07:39:35

标签: asp.net

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

这只是一个场景,但用户控件在整个网站上被使用。

用户控件负责生成JSON请求,令我恐惧的是,我注意到表单元素id的名称不是我所谓的 - 而是以controlID_ContentPlaceHolderID_UserControl_MyActualFormElementName

为前缀

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

只要您在javascript中引用控件,就应该只使用CliendID

javascript中控件名称中的

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;
     }
}