在ASP.NET中强制客户端ID

Chr*_*s S 0 asp.net clientid

我知道在ASP.NET的下一个版本中,我们最终能够在System.Web控件上设置clientids而不用框架以准智能的方式为我们做这件事,例如:

id="ctl00__loginStatus__profileButton"
Run Code Online (Sandbox Code Playgroud)

有没有人知道一个好的方法同时强制上面的id类似的东西

id="profileButton"
Run Code Online (Sandbox Code Playgroud)

主要原因是在动态地向页面添加控件时操纵jQuery中的clientids.我能看到的问题是改变ID会破坏Viewstate吗?

0x0*_*818 7

您必须使用该ClientIDMode属性:

<asp:xxxx ID="fileselect" runat="server" ClientIDMode="Static"/>  
Run Code Online (Sandbox Code Playgroud)


Jos*_*rke 6

我倾向于动态生成处理此问题的javascript方法.您可以在标记或代码后面执行此操作,例如:

<script language="javascript" type="text/javascript">
function doXYZ()
{
   $("#" + getListBoxId()).css(...)
}

function getListBoxId()
{
 return "<%=this.myListBox.ClientId>";
}

</script>
Run Code Online (Sandbox Code Playgroud)

您还可以在后面的代码中构建函数并注册它们.

编辑

几个月前我需要修复一些服务器控件的id,我设法破解它,我在这里描述了我的方法.

基本上,您需要将控件放在命名容器(如用户控件)中,然后覆盖几个属性,这些属性会阻止子控件获取其唯一ID.