2011-05-05 61 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>") %> 

它使用可选参数,你可以提供一个格式字符串。