передача аргументов в onserverclick - PullRequest
0 голосов
/ 13 апреля 2011

При использовании этой строки кода я получаю ошибку

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 ]

2 голосов
/ 13 апреля 2011

Убедитесь, что <%# %> охватывает весь атрибут следующим образом:

<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 голос
/ 13 апреля 2011

, поскольку onserverclick вычисляется на стороне сервера, # рассматривается как директива C #. Вы можете заменить <%#Eval("ProductDescriptionId")%> на что-то вроде DataBinder.Eval(Container.DataItem,"ProductDescriptionId").

...