Javascript usercontrol中的Hiddenfield,无法在客户端访问它

Javascript usercontrol中的Hiddenfield,无法在客户端访问它,javascript,asp.net,Javascript,Asp.net,我在用户控件中有一个隐藏字段。在运行时,我将隐藏字段ClientId分配给锚标记,如下所示: aClickSort1.HRef = string.Format("javascript:SortImage({0},{1});", divArrowUp1.ClientID, hiddenSort1.ClientID); 问题是,当我试图在客户端代码中获取隐藏字段ClientId时,它是未定义的 如何在客户端代码上访问它 另外,HiddenField位于用户控件中 关于Örvar当您将Visible

我在用户控件中有一个隐藏字段。在运行时,我将隐藏字段ClientId分配给锚标记,如下所示:

aClickSort1.HRef = string.Format("javascript:SortImage({0},{1});", divArrowUp1.ClientID, hiddenSort1.ClientID);
问题是,当我试图在客户端代码中获取隐藏字段ClientId时,它是未定义的

如何在客户端代码上访问它

另外,HiddenField位于用户控件中

关于Örvar

当您将Visible=false设置为服务器端控件时,它将根本不会发送到客户端


相反,设置style=display:none;或者更好的是,通过CSS,它将被发送到浏览器,并且仍然被隐藏。

原因似乎是不可见的容器。如果您有以下情况:

<asp:panel id="panel1" runat="server" Visible="false">
    <asp:hiddenfield id="hiddenfield1 runat="server" value="123"/>
</asp:panel>
您无法访问panel1中的内容,因为属性为visible=false的服务器端控件未呈现内容


可以使用style=display:none将其设置为div;或者将hiddenfield保留在不可见的容器之外,因为它无论如何都不可见。

您需要将hiddenSort1的ClientIdMode设置为静态

像这样:

 <asp:HiddenField ID="hiddenSort1" runat="server" ClientIDMode="Static" />

如果我错了,请更正,但Id是否已生成,如果用户控件中有隐藏字段,则它将获得以下Id:

myUserControlName$myHiddenFieldId 

@TheVillageldiot。Re:或者将hiddenfield放在不可见的容器之外,因为它无论如何都不可见。这正是我的隐藏字段的实现方式。您是在控件的标记中还是在包含控件的页面中写入该行?当我单击锚点时,会弹出一个javascript错误,并显示:“ctl00_mainWebPartManager_wp523183745_wp321661269_radPanelSettings_i0_hidde”‌​sort1'是未定义的函数SortImagedivUpClientId,sort1{}它说sort1是未定义的。我试图将CLIENTDMODE设置为静态,但它不起作用。当我点击锚点时,会弹出一个javascript错误,并说:“ctl00_mainWebPartManager_wp523183745_wp321661269_radPanelSettings_i0_hiddenSort1”未定义当您将ClientMode设置为static时,这意味着在html页面中,元素的id应该与在aspx页面中的id相同。所以'ctl00_mainWebPartManager_wp523183745_wp321661269_radPanelSettings_i0_hidde‌​“1”不是隐藏的‌​您的身份证。请检查隐藏处‌​浏览器中html格式的用户id。什么是隐藏‌​元素id?
myUserControlName$myHiddenFieldId