我一直在墙上敲着头,整整一天。我正在研究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);
}
这是LinkButton的代码:
<p>
<asp:LinkButton ID="AddToCartButton" runat="server" CausesValidation="False" OnClick="AddToCartButton_Click1">Add to Shopping Cart</asp:LinkButton>
</p>
我尝试过设置断点但是从未达到过该事件。 LinkButton也会导致回发,但永远不会触发OnClick事件。
非常感谢任何帮助!
这是网址:http://www.northarktest.net/edwards/balloonshop
似乎click事件在服务器上触发,但是在本地调试时。
答案 0 :(得分:3)
如果它有助于我遇到类似问题,我的LinkButton Click事件(在后面的代码中分配)从未触发过。事实证明,由于我的LinkButtons是动态创建的,我不得不将它们移出我的Page_Load()事件并进入Page_Init()事件。完成后,LinkButton Click事件开始工作......与页面生命周期和所有有趣的东西有关。
答案 1 :(得分:1)
从查看代码,我看不出任何问题。您可以尝试以下方法:
尝试将onclick
方法从OnClick="AddToCartButton_Click1"
更改为OnClick="AddToCartButton_Click"
。只需删除数字1.对代码隐藏方法也一样。
重建您的项目。
如果不起作用,请通过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 LinkButton后,我收到了以下网址: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)
我有这个问题 如果我将LinkButton更改为按钮
,它会起作用问题是我在同一页面上有一个PayPal按钮,它有一个名称=&#34;提交&#34;某种方式干扰了回发。我删除了属性,链接按钮工作了!