2011-05-05 140 views
4

我在ASPX頁面的Repeater控件中輸出了幾行Javascript代碼。我想在腳本標記中使用我的DataSource中的值。<script><asp:repeater>中的標記

一個非常基本的例子可能是:

<asp:Repeater ID="RepeaterBlah" runat="server"> 
<ItemTemplate> 
    Hello <%# DataBinder.Eval(Container.DataItem, "SomeName")%> 
    <script>myfunction(<%# DataBinder.Eval(Container.DataItem, "SomeNumber")%>)</script> 
</ItemTemplate> 
</asp:Repeater> 

我知道,大多數人都不會重複腳本標記這樣,但我使用的一小段代碼由第三方,你可以放置在頁面的任何位置來創建一個Flash對象。您傳遞一個數字,以便知道要顯示哪個圖庫。在一個頁面上使用幾個沒有問題。

首先,這工作得很好,雖然我注意到Visual Web Developer中的顏色表明它並不真的喜歡在<script>標籤中使用<%#。 Intellisense在代碼隱藏方面也有點瘋狂!

那麼將數據集項目傳遞給腳本標記的正確方法是什麼?

+0

用文本框顯示您的示例。也許錯誤是在您添加它時引入的。 – 2011-05-05 10:56:55

+0

我不知道,但它是有道理的,你不能訪問文本框服務器控件,因爲它不是真的存在,除非作爲模板。爲了解決這個問題,你可能需要處理數據綁定事件或者通過模板。 – 2011-05-05 11:00:26

+0

對不起,忽略提到TextBox,結果是無關緊要的。 – 2011-05-05 11:01:00

回答

2

這也許? (不太記得了,如果+符號其實應該&跡象雖然)

<%# "<script>myfunction(" + DataBinder.Eval(Container.DataItem, "SomeNumber") + ")</script>" %> 
+0

是的,我曾試過。它確實有效,智能感知呻吟少。我主要想知道這樣做的「正確」方式是什麼! – 2011-05-05 20:19:05

1

另一種替代語法是以下幾點:

<%# Eval("SomeNumber", "<script>myfunction({0});</script>") %> 

它使用可選參數,你可以提供一個格式字符串。