在onserverclick中传递参数

时间:2011-04-13 07:52:39

标签: c# asp.net repeater eval

使用这行代码时,我收到错误

CS1040:预处理程序指令必须显示为一行中的第一个非空白字符

此代码位于标记下并位于asp:Repeater控件

<td valign="bottom" width="130">
<%# Eval("Quantity")%>+ in stock<br />
<input class="textbox" maxlength="2" name="Quantity" size="2" type="text" value="1" />
                    <br />

<a id="A1" class="positive" runat="server"
onserverclick='addtocart(<%#Eval("ProductDescriptionId")%>,Quantity)'> Add to Cart</a>

2 个答案:

答案 0 :(得分:2)

确保<%# %>跨越整个属性,如下所示:

<a id="A1" class="positive" runat="server" 
   onserverclick='<%# "addtocart("+Eval("ProductDescriptionId").ToString()+",Quantity)"%>'>

或者,您可以使用Eval方法中的内置格式:

<a id="A1" class="positive" runat="server" 
   onserverclick='<%# DataBinder.Eval( Container.DataItem, "ProductDescriptionId", "addtocart({0},Quantity)")%>'>

答案 1 :(得分:1)

由于onserverclick在服务器端进行评估,因此#被视为C#指令。您可以使用<%#Eval("ProductDescriptionId")%>等内容替换DataBinder.Eval(Container.DataItem,"ProductDescriptionId")