0

我在中继器中有这行代码:-

<div class="paymentOptionsForm" onclick="$('.rbToken<%# Container.ItemIndex+1 %>>input').attr('checked', 'checked'); changeActiveType('token<%# Container.ItemIndex+1 %>', this);">

在 HTML 中呈现良好,如:-

<div class="paymentOptionsForm" onclick="$('.rbToken1>input').attr('checked', 'checked'); changeActiveType('token1', this);">

但是(在同一个中继器中)

<div id="divTokenDropDown" class="tokenDecision<%# Container.ItemIndex+1 %>" runat="server">

呈现为:-

<div id="ctl00_plcContentMain_CtlToken_rptcard_ctl00_divTokenDropDown" class="tokenDecision&lt;%# Container.ItemIndex+1 %>" style="display:block;">

我不确定为什么会以这种方式呈现,除了它可能与 runat="server" 有关,但我需要将其留在此处。

4

1 回答 1

1

试试这样:

<div id="divTokenDropDown" 
   class='<%# string.Format("tokenDecision{0}", Container.ItemIndex+1) %>' 
   runat="server">

还有一些其他的表达式也可以工作(如 string.Concat)。

我只是在这里推测,但我猜该runat="server"属性意味着解析器将标签视为 a System.Web.UI.HtmlControls.HtmlGenericControl,这(我进一步猜测)允许您将属性绑定到表达式,但不能将文字与表达式混合为属性值。您使用的第一个标记不是服务器控件,因此解析器甚至不会将其解释为标记,而只是将其视为需要将表达式的值放入其中的位置。

于 2013-04-30T11:31:41.537 回答