为什么我的ASP.NET LinkBut​​ton没有触发OnClick =“AddToCart_Click”事件?

时间:2012-03-31 15:09:35

标签: c# asp.net e-commerce

我一直在墙上敲着头,整整一天。我正在研究Apress的“在C#中开始使用ASP.NET电子商务”,如果有人熟悉该项目的话。在第10章中,我们正在使用PayPal AddToCart和GoToCart功能。 这是未触发的事件:

    //Why is this not working?
protected void AddToCartButton_Click1(object sender, EventArgs e)
{
    string productID = Request.QueryString["ProductID"];
    ProductDetails pd = CatalogAccess.GetProductDetails(productId);
    string options = "";
    foreach (Control cnt in attrPlaceHolder.Controls)
    {
        if (cnt is Label)
        {
            Label attrLabel = (Label)cnt;
            options += attrLabel.Text;
        }
        if (cnt is DropDownList)
        {
            DropDownList attrDropDown = (DropDownList)cnt;
            options += attrDropDown.Items[attrDropDown.SelectedIndex] + "; ";
        }
    string productUrl = Link.ToProduct(pd.ProductID.ToString());
    string destination = Link.ToPayPalAddItem(productUrl, pd.Name, pd.Price, options);
    Response.Redirect(destination);
    }

这是LinkBut​​ton的代码:

    <p>
    <asp:LinkButton ID="AddToCartButton" runat="server" CausesValidation="False" OnClick="AddToCartButton_Click1">Add to Shopping Cart</asp:LinkButton>
</p>

我尝试过设置断点但是从未达到过该事件。 LinkBut​​ton也会导致回发,但永远不会触发OnClick事件。

非常感谢任何帮助!

这是网址:http://www.northarktest.net/edwards/balloonshop

似乎click事件在服务器上触发,但是在本地调试时。

7 个答案:

答案 0 :(得分:3)

如果它有助于我遇到类似问题,我的LinkBut​​ton Click事件(在后面的代码中分配)从未触发过。事实证明,由于我的LinkBut​​tons是动态创建的,我不得不将它们移出我的Page_Load()事件并进入Page_Init()事件。完成后,LinkBut​​ton Click事件开始工作......与页面生命周期和所有有趣的东西有关。

答案 1 :(得分:1)

从查看代码,我看不出任何问题。您可以尝试以下方法:

  1. 尝试将onclick方法从OnClick="AddToCartButton_Click1"更改为OnClick="AddToCartButton_Click"。只需删除数字1.对代码隐藏方法也一样。

  2. 重建您的项目。

  3. 如果不起作用,请通过Visual Studio设计视图在页面中拖动一个新按钮,然后双击Button以生成事件处理程序。然后将旧按钮事件(AddToCartButton_Click1)中的代码现有代码添加到新代码中。

答案 2 :(得分:1)

我猜LinkButton会触发OnClick事件。也许方法AddToCartButton_Click1()重定向到错误的网址,请重新检查此行:

string productUrl = Link.ToProduct(pd.ProductID.ToString());
string destination = Link.ToPayPalAddItem(productUrl, pd.Name, pd.Price, options);
Response.Redirect(destination);

为什么呢?点击Add to Shopping Cart LinkBut​​ton后,我收到了以下网址:http://www.northarktest.net/edwards/balloonshop/Im-Younger-Than-You-p22/?ProductId=22

现在,如果您发现网址中缺少网页,其中应包含以下内容:abc.aspx?ProductId=22

答案 3 :(得分:1)

我遇到了这个问题。就我而言,问题在于我为其中的字段添加了一些modalpopup验证器。如果要进行验证并且此验证失败(即使您无法看到,如我的情况),除非您将CausesValidation属性声明为false,否则任何按钮都不会引发事件。

答案 4 :(得分:0)

对不起其他帖子......

我得到了答案,其中一位书作者提供了......谢谢Andrei Rinea先生......

在product.aspx中的Page_load事件的顶部添加:

AddToCartButton.PostBackUrl = Request.Url.AbsoluteUri;

注意:我尝试将产品添加到BalloonShop购物车时跳过了PayPal购物车并在本书后面遇到了这个问题。

希望它有所帮助!

答案 5 :(得分:0)

我知道这是一个老问题但是,如果你添加:

AddToCartButton.PostBackUrl = Request.RawUrl;

对于Page_Load,它将更正Url问题。

答案 6 :(得分:-1)

我有这个问题 如果我将LinkBut​​ton更改为按钮

,它会起作用

问题是我在同一页面上有一个PayPal按钮,它有一个名称=&#34;提交&#34;某种方式干扰了回发。我删除了属性,链接按钮工作了!