2012-01-12 4 views
0

Я пытаюсь создать что-то почти похожее на это [1]: http://weblogs.asp.net/infinitiesloop/archive/2007/09/17/inline-script-inside-an-asp-net-ajax-updatepanel.aspxasp.net встроенные теги внутри пользовательского элемента управления

Проблема я столкнулся в том, что если я использую встроенный тег, свойство страницы ClientID это разрешен как «__Page», хотя этого не происходит с дочерними элементами управления этой страницы. Так, например, если я использую элемент управления, как этот

<tag:InlineScript runat="server"> 
     <script type="text/javascript"> 
      alert('<%= ClientID %>'); 
      alert('<%= SomeLabelInTheSamePage.ClientID %>'); 
     </script> 
    </tag:InlineScript> 

страница отображается как:

<script type="text/javascript"> 
     alert('__Page'); 
     alert('MainContent_CorrectLabelId'); 
    </script> 

Любая идея, почему?

[1] Различие заключается в том, что я использую пользовательский элемент управления (вместо управления сервером), украшенный ParseChildren (false), тот же код, что и страница, с которой я связан.

+0

вы уверены, что вы делаете Привязка правильно вернуть ClientID где в коде позади, при необходимости вы назначая или объявляя ClientID также ClientId хранится в сессии [» ClientID "] в вашем коде ..? если вы пытаетесь следовать примеру. Я не вижу, где вы регистрируете ScriptManager.RegisterStartupScript (это, typeof (Страница), UniqueID, «alert ('hi')», true); как в примере Url. – MethodMan

+0

Какие еще сценарии предупреждают ('<% = ClientID%>'); сделать правильный идентификатор? только в пользовательских элементах управления? –

+0

У вас есть тег: InLineScript, вы пытались сделать что-либо вроде var tmp = document.getElementsByTagName ("yourTagName") – MethodMan

ответ

1

Попробуйте это:

<tag:InlineScript id="myInlineScript" runat="server"> 
    <script type="text/javascript"> 
     alert('<%=myInlineScript.ClientID %>'); 
     alert('<%=SomeLabelInTheSamePage.ClientID %>'); 
    </script> 
</tag:InlineScript> 
+0

Это должно работать - просто вызов ClientID вытащит this.ClientID, который будет Page.ClientId, Control.ClientId и т. Д. ... – dash

+0

Ха, как я пропустил это ?. Всем спасибо. –

Смежные вопросы