【问题标题】:passing arguments in onserverclick在 onserverclick 中传递参数
【发布时间】:2011-04-13 16:10:25
【问题描述】:

在使用这行代码时,我得到了错误

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>

【问题讨论】:

    标签: c# asp.net repeater eval


    【解决方案1】:

    确保&lt;%# %&gt; 跨越整个属性,如下所示:

    <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)")%>'>

    【讨论】:

    • @user478636 究竟是什么不起作用?你得到同样的错误还是有其他东西不起作用?
    • 嗯,我正在使用链接按钮,它比我尝试做的更简单。
    【解决方案2】:

    因为 onserverclick 是在服务器端评估的,所以 # 被视为 C# 指令。您可以将&lt;%#Eval("ProductDescriptionId")%&gt; 替换为DataBinder.Eval(Container.DataItem,"ProductDescriptionId")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2012-01-22
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多