单击按钮/链接调用javascript和C#

单击按钮/链接调用javascript和C#,c#,javascript,asp.net,C#,Javascript,Asp.net,我目前有一个Gridview,它带有一个itemTemplate,充当调用javascript函数的链接: <ItemTemplate> <a href="javascript:;" onclick="simpleCart.add( 'name=<%# Eval("Name") %>' , 'price=<%# Eval("Price") %>' , 'quantity=1' );">Add To Cart</a&g

我目前有一个Gridview,它带有一个itemTemplate,充当调用javascript函数的链接:

 <ItemTemplate>
            <a href="javascript:;" onclick="simpleCart.add( 'name=<%# Eval("Name") %>' , 'price=<%# Eval("Price") %>' , 'quantity=1' );">Add To Cart</a>
            </ItemTemplate>
<asp:LinkButton 
    id="LinkButton1"
    text="Add To Cart"
    OnClientClick='<%# string.Format("&quot;name={0}&quot;, &quot;price={1}&quot;, &quot;quantity=1&quot;", Eval("Name"), Eval("Price")) %>'
    OnClick="LinkButton1_Click"
    runat="Server" />

我需要添加一些只能在C#中使用的功能,因此我想用按钮替换链接,当单击按钮时,它会调用C#函数和javascript函数(它们不需要交互/共享任何数据)。这可能吗?

是的,有可能


听起来您希望避免整页回发,因此可以使用ASP.NET回调或更普通的Ajax调用(可能使用jQuery)来调用服务器端代码。(我假设您的C#代码在服务器上,而不是在本地Silverlight应用程序中)。

您可以使用LinkButton并设置OnClientClick属性以在转到服务器之前执行javascript函数。如果此函数返回false,甚至可以取消服务器调用:

 <ItemTemplate>
            <a href="javascript:;" onclick="simpleCart.add( 'name=<%# Eval("Name") %>' , 'price=<%# Eval("Price") %>' , 'quantity=1' );">Add To Cart</a>
            </ItemTemplate>
<asp:LinkButton 
    id="LinkButton1"
    text="Add To Cart"
    OnClientClick='<%# string.Format("&quot;name={0}&quot;, &quot;price={1}&quot;, &quot;quantity=1&quot;", Eval("Name"), Eval("Price")) %>'
    OnClick="LinkButton1_Click"
    runat="Server" />

您可以使用
OnClientClick
属性的
LinkButton
来执行客户端脚本和服务器代码的
OnClick
事件


下面是代码示例和更详细的说明

何时需要调用javascript函数?在服务器端之前还是之后?在这种情况下没有真正的区别。我想这就是我必须要做的,但是现在我得到了错误“服务器标记的格式不正确”。问题在于javascript部分(onClientClick),我只是复制了我的原始帖子中的内容。p、 我很抱歉花了这么长时间才回复,周末就离开了