Почему мой ASP.NET LinkButton не запускает событие OnClick= "AddToCart Click"?

Я уже целый день бьюсь головой об стену. Я работаю над "началом" Apress ASP.NET электронная коммерция в C#", в случае, если кто-то знаком с проектом. В главе 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.

любая помощь была бы очень признательна!

вот url:http://www.northarktest.net/edwards/balloonshop

Кажется, что событие click запускается на сервере, но при локальной отладке.

7 ответов


Я думаю LinkButton вообще огонь OnClick событие. Может быть, метод AddToCartButton_Click1() перенаправляет на неправильный URL, пожалуйста, проверьте эту строку:

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

почему? После нажатия на кнопку Добавить в корзину я получил этот URL:http://www.northarktest.net/edwards/balloonshop/Im-Younger-Than-You-p22/?ProductId=22

теперь, если вы заметили, что в URL отсутствует страница, которая должна иметь что-то вроде: abc.aspx?ProductId=22.


в случае, если это поможет кому-либо, у меня была аналогичная проблема в том, что мои события щелчка LinkButton (назначенные в коде позади) никогда не срабатывали. Оказывается, поскольку мои кнопки LinkButtons создавались динамически,мне пришлось переместить их из моего события Page_Load() и в событие Page_Init (). После этого события щелчка LinkButton начали работать ... что-то связанное с жизненным циклом страницы и всеми этими забавными вещами.


глядя на ваш код, я не вижу никакой проблемы. Вы можете попробовать следующее:

  1. попробуйте изменить onclick методика: OnClick="AddToCartButton_Click1" to OnClick="AddToCartButton_Click". Просто уберите число 1. Сделайте то же самое для вашего метода code-behind.

  2. перестроить проект.

  3. если это не работает, перетащите новую кнопку на странице с помощью Visual Studio design view и дважды щелкните кнопку, чтобы создать обработчик событий. Затем добавьте код существующий код из старого события button (AddToCartButton_Click1) на новый.


у меня была такая проблема. В моем случае, проблема была в том, что я добавил modalpopup с валидаторов для полей внутри него. Если есть проверка, которая должна быть выполнена, и эта проверка не выполняется (даже если вы не видите этого, как в моем случае), любая кнопка не вызовет событие, если вы не объявите CausesValidation свойству false.


извините за другой пост...

Я получил ответ, любезно предоставленный одним из авторов книги... спасибо Андрей Rinea...

в верхней части события Page_load в продукте.аспн добавить:

AddToCartButton.PostBackUrl = Запрос.Url-адрес.AbsoluteUri;

примечание: Я пропустил корзину PayPal и столкнулся с этой проблемой позже в книге при попытке добавить продукты в корзину BalloonShop..

надеюсь, что это помогает!


Я знаю, что это старый вопрос, но, если вы добавите:

AddToCartButton.PostBackUrl = Request.RawUrl;

для загрузки страницы он исправит проблемы с Url-адресом.


У меня была эта проблема Это сработало, если я изменил LinkButton на кнопку, хотя

проблема заключалась в том, что у меня была кнопка PayPal на той же странице, и у нее был атрибут name="submit", который каким-то образом мешал обратной передаче. Я удалил атрибут, и кнопки linkbuttons работали!