2012-01-12 74 views
0

我試圖創建幾乎與此類似[1]:http://weblogs.asp.net/infinitiesloop/archive/2007/09/17/inline-script-inside-an-asp-net-ajax-updatepanel.aspx用戶控件內asp.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

你確定你正在做正確的結合,在代碼返回客戶端ID後面如果有必要,你指派或聲明的ClientID也被客戶端ID存儲在一個會話[」 ClientID「]在您的代碼..?如果您試圖按照示例..我沒有看到你在哪裏註冊ScriptManager.RegisterStartupScript(this,typeof(Page),UniqueID,「alert('hi')」,true);如在Url示例中所示。 – MethodMan 2012-01-12 19:02:22

+0

還有什麼其他方案會提示('<%= ClientID%>');呈現正確的ID?僅在用戶控件中? – 2012-01-12 19:06:14

+0

你有標籤:InLineScript,你有沒有嘗試做任何事情,如var tmp = document.getElementsByTagName(「yourTagName」) – MethodMan 2012-01-12 19:09:39

回答

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 2012-01-12 19:15:43

+0

哈,我怎麼錯過了?感謝大家。 – 2012-01-12 20:37:16