2012-05-01 90 views
0

我在用戶控件中有一個隱藏字段。在運行時我分配隱藏域的ClientID到這樣一個錨標記:用戶控件中的Hiddenfield無法在客戶端訪問它

aClickSort1.HRef = string.Format("javascript:SortImage({0},{1});", divArrowUp1.ClientID, hiddenSort1.ClientID); 

的事情是,當我試圖讓隱藏字段在客戶端代碼客戶端ID,它是不確定的。

如何在客戶端代碼上訪問它?

詩篇。該HiddenField是在用戶控件

問候ORVAR

回答

0

當您設置Visible="false"服務器端控制,它不會在所有發送到客戶端。

取而代之的是,設置style="display: none;"甚至通過CSS更好,然後它會被髮送到瀏覽器,仍然被隱藏。

0

看來,原因是不可見的容器。如果你有這樣的:

<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或剛剛離開hiddenfieldnon-visible容器外,因爲它是不可見的反正。

+0

@TheVillageldiot。 Re:或者只是將hiddenfield留在不可見的容器之外,因爲它不可見。這正是我隱藏的領域如何實現的。 –

+0

您是在控件的標記中還是在包含控件的頁面中寫入行? – TheVillageIdiot

+0

在control's標記 –

0

您需要將hiddenSort1的ClientIdMode設置爲靜態。

像這樣:

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

從JavaScript:

var hiddenSort1 = document.getElementById('hiddenSort1'); 
+0

我試圖將ClientIdMode設置爲靜態,它不起作用。當我點擊錨點javascript錯誤彈出並說:'ctl00_mainWebPartManager_wp523183745_wp321661269_radPanelSettings_i0_hiddenSort1'未定義 –

+0

當您將ClientIDMode設置爲靜態時,這意味着,在html頁面中,元素shuld具有與aspx頁面中相同的id。因此'ctl00_mainWebPartManager_wp523183745_wp321661269_radPanelSettings_i0_hidde nSort1'不是隱藏nSort1的ID。請在html中檢查hidde nSort1的id(在瀏覽器中)。什麼是hidde nSort1元素ID? –

0

糾正我,如果我錯了,但isn't ID,生成,如果你有一個用戶控件的隱藏字段它將得到Id:

myUserControlName$myHiddenFieldId