【问题标题】:Server tag error when passing parameters to javascript from gridview从gridview将参数传递给javascript时服务器标记错误
【发布时间】:2011-12-08 10:43:01
【问题描述】:

我有一个gridview,并且在按下gridview 中的按钮时需要将两个参数传递给javascript 函数。 脚本如下:

<script type="text/javascript">
        function AddItem(name,price) {

            javascript: simpleCart.add('name=' + name, 'price=' + price, 'quantity=1');
        }    
    </script>

在 gridview 中,我尝试像这样传递参数:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick="AddItem('<%# Eval("Name") %>', '<%# Eval("Price") %>')" />

但是得到一个“服务器标签格式不正确的错误”。

我也试过这样:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick='<%# Eval("Name","Price", "return AddItem({0},{1})") %>'  />

但 Eval 函数似乎只允许传递 1 个参数。

【问题讨论】:

    标签: javascript asp.net gridview parameters


    【解决方案1】:
    <asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" 
         OnClientClick='<%# Eval("Name", "AddItem(\"{0}\", ").ToString() + Eval("Price", "\"{0}\")").ToString() %>' />
    

    【讨论】:

    • 有效!非常感谢,永远卡住了!你介意解释为什么你的工作,而其他人没有吗?再次感谢
    • 之所以有效,是因为每个单引号都会使标记解析器迷失方向。除了这个之外,表达式的计算方式几乎与常规 C# 表达式相同。
    • 这就是我的意思。
    【解决方案2】:

    尝试将其更改为:

    <asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick='<%# "AddItem('" + Eval("Name") + "', '" + Eval("Price") + "')"' />
    

    或者这也可能有效

    <asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick="AddItem('<%# Eval(&quot;Name&quot;) %>', '<%# Eval(&quot;Price&quot;) %>')" />
    

    在服务器控件属性中使用引号会扰乱编译过程,因为它无法确定属性的结束位置。您可以使用撇号(第一个示例)或转义引号(第二个示例)

    【讨论】:

    • 第一个解决方案仍然给我一个服务器标签错误(我假设最后有一个错误并将其更改为 )"%>' )第二个也不起作用,它将 作为参数传递:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多