点击按钮上的火javascript

时间:2011-04-07 15:07:04

标签: c# .net asp.net literals

我正在努力在我们的电子商务网站中添加一些分析代码。我正在做的是在字符串构建器中编写一些构造javascript,然后在aspx端的文字中设置js。诀窍是我只想在单击“添加到购物车”按钮时填充此文字。很容易,在按钮单击事件中构建字符串并将文字文本设置为正确吗?好吧,我已经尝试过,无法让它发挥作用。除了这个新事件之外,按钮点击事件仍然需要保留其先前的操作。

当我测试时,我看不到正在设置的字符串。 我在这里错过了什么吗?

这里我的aspx页面中的按钮代码以及直接位于它下面的文字:

<asp:ImageButton ID="btnCartMain" runat="server" ImageUrl="~/Images/Buttons/btn_AddToCartFlat.gif" CommandName="AddToCart" AlternateText="Add to cart" OnClick="GroupedAddToCartClick" ImageAlign="AbsMiddle" />
<asp:Literal ID="litSCscAdd" runat="server"></asp:Literal>

这是点击处理程序(底部有新字符串):

protected void GroupedAddToCartClick(object sender, EventArgs e)
    {
        int itemId = Convert.ToInt32(ddItems.SelectedValue);
        ProductItem prodItem = null;
        _prod.ProductItems.TryGetValue(itemId, out prodItem);

        if (ddShipTo.SelectedValue == string.Empty)
            rfName.Enabled = true;

        if (ProcessAddToCartClick(ddShipTo.SelectedValue,
            ddShipTo.SelectedItem.Text,
            Convert.ToInt32(txtQuantity.Text),
            prodItem, ddItems.SelectedIndex, string.Empty))
        {
            btnCartMain.ImageUrl = "~/Images/Buttons/btn_AddedToCart.gif";
        }

        //---- SITECATALYST -- add to cart event ///
        System.Text.StringBuilder sbSCseventscadd = new System.Text.StringBuilder();
        sbSCseventscadd.Append(String.Format("<script type=\"text/javascript\">"));
        sbSCseventscadd.Append(String.Format("s.events=\"scAdd\""));
        sbSCseventscadd.Append("</script>");
        this.litSCscAdd.Text = sbSCseventscadd.ToString();
    }

4 个答案:

答案 0 :(得分:0)

好吧,我运行了以下代码,它在这里工作正常。

  protected void GroupedAddToCartClick(object sender, EventArgs e)
{
    System.Text.StringBuilder sbSCseventscadd = new System.Text.StringBuilder(); 
    sbSCseventscadd.Append(String.Format("<script type=\"text/javascript\">")); 
    sbSCseventscadd.Append(String.Format("s.events=\"scAdd\"")); 
    sbSCseventscadd.Append("</script>");
    this.litSCscAdd.Text = sbSCseventscadd.ToString();
}

首先,我尝试将纯字符串设置为文字,它就像一个魅力。 有了JS,我得到了这个aspx:

  <input type="image" name="btnCartMain" id="btnCartMain" src="Images/Buttons/btn_AddToCartFlat.gif" alt="Add to cart" align="absmiddle" style="border-width:0px;" />
<script type="text/javascript">s.events="scAdd"</script>

你想要的是什么,对吧?

当然,我收到一个未定义的运行时错误。

那么某处必须有另一个问题? button_click真的被执行了吗?

除此之外,在这里使用StringBuilder是明显的开销。

答案 1 :(得分:0)

如果我正确关注您正在尝试在满足某些条件时向现有按钮添加一些客户端功能。但与此同时,您需要按钮预定义功能(回发?)才能保持有效?

我之前完成此类行为的一种方法是在按钮顶部放置一个透明div。给div一个click事件,它调用扩展函数,然后是下躺按钮的click事件。然后你可以根据任何标准隐藏或显示div。如果显示div,则执行额外的客户端代码然后将click事件传递给按钮,如果div被隐藏,则按钮直接接收点击。

不是说这对你的场景来说一定是最好的选择,但它应该有效。

答案 2 :(得分:0)

不是激活javascript服务器端,你不能只设置按钮的onclientclick属性并在那里添加你的javascript(记得返回true)?

答案 3 :(得分:0)

我终于明白了 - 有点儿。单击按钮后,我最终只是在回发中执行它。不是最好的方法,但由于它是页面上唯一导致回发的控件,无关紧要。