2009-03-23 4 views
2

Я пытаюсь получить CLientID внутри файла .ascx (пользовательский надбавок).ClientID внутри файла ASCX

Хотя это

My id is: <%=this.ClientID%> 

делает, как Мой идентификатор: fracTemplateCtrl

Это:

 <asp:Button ID="btnSave" runat="server" Text="Save Template" onclick="btnSave_Click" OnClientClick="return confirmSave('<%=this.ClientID%>');" /> 

оказывает, как (внутри исходного кода):

 <input type="submit" name="fracTemplateCtrl$btnSave" value="Save Template" onclick="return confirmSave('&lt;%=this.ClientID%>');" id="fracTemplateCtrl_btnSave" /> 

Очевидно, что свойство ClientId не оценивается во втором случае. Как мне решить эту проблему? (Кроме жесткого кодирования, который не является ответом, я хотел бы сделать пользовательский элемент управления независимым)

ответ

3

Вы можете установить значение на сторону сервера собственности OnClientClick как это:

btnSave.OnClientClick = "return confirmSave('" + this.ClientID + "')"; 
2

Попробуйте вместо

<asp:Button ID="btnSave" runat="server" Text="Save Template" onclick="btnSave_Click" OnClientClick="return confirmSave(this.id);" /> 
+0

ОК, можете видеть это сейчас, спасибо! – sarsnake

+0

На самом деле, ваш первый ответ заставил меня думать в правильном направлении. Однако OnClientClick = "return confirmSave (this.id);" фактически оценивается как идентификатор кнопки (а не идентификатор элемента управления). Итак, вы были правы в первый раз. :) – sarsnake

+0

@ gnomixa-Спасибо, но в первый раз я все еще был не прав. Я не мог объяснить это точно и кратко, поэтому я просто скомпоновал код, который, как я думал, будет работать, но к тому времени я забыл смысл! ;-) Но спасибо за взятку в любом случае. –