【问题标题】:Custom Image Button control click handler not firing自定义图像按钮控件单击处理程序未触发
【发布时间】:2013-03-13 10:18:12
【问题描述】:

我在创建基于 ASP.NET 的 ImageButton 控件的新控件时遇到了一些问题。一切都按预期工作,除了在控件的 OnInit 覆盖中连接的单击处理程序。基本上,单击自定义图像按钮只会刷新页面,而不会点击处理程序。

现在,我知道这是我做过或只是不理解的愚蠢的事情,但我终其一生都无法弄清楚这一点。我发现的关于控件事件处理问题的所有文章、问题和论坛帖子都是针对子控件的,而不是那些继承自现有控件类型并具有自己的预定义处理程序的控件。

以下代码是我写的:

public class WebPaymentButton : ImageButton
{
    public string DisabledImageUrl { get; set; }

    public string TermsAcceptClass { get; set; }

    protected override void OnPreRender(EventArgs e)
    {
        Page.ClientScript.RegisterClientScriptResource(typeof (WebPaymentButton), "PaymentModule.Scripts.WebPaymentButtonScript.js");
    }

    protected override void OnInit(EventArgs e)
    {
        CssClass = "WebPaymentButton";

        if (!string.IsNullOrWhiteSpace(TermsAcceptClass))
        {
            Attributes["data-TermsClass"] = TermsAcceptClass;
        }

        if (!string.IsNullOrWhiteSpace(DisabledImageUrl))
        {
            Attributes["data-DisabledImageUrl"] = ResolveUrl(DisabledImageUrl);
        }


        Click += WebPaymentButton_Click;

        base.OnInit(e);
    }


    private void WebPaymentButton_Click(object sender, ImageClickEventArgs e)
    {
        HttpContext.Current.Response.Redirect("http://dummy_payment_page_in_place_of_code", true);
    }
}

我尝试将处理程序挂接到 OnLoad 中,并在 base.OnInit/OnLoad 调用后将其切换为运行。没有什么能解决处理程序的问题。谁能指出我正确的方向?

如果有帮助,这里是页面上按钮的标记:

<pm:WebPaymentButton runat="server" ImageUrl="~/pay-now.png" DisabledImageUrl="~/not-pay-now.png" TermsAcceptClass="TermsCheckbox" ID="MainPayButton" />

【问题讨论】:

  • 那么将private void WebPaymentButton_Click 更改为protected void WebPaymentButton_Click 会发生什么?
  • @MikeSmithDev 尝试这个建议没有任何改变。在这两种情况下都没有错误或警告。

标签: asp.net webforms


【解决方案1】:

您是否尝试过覆盖OnClick 事件处理程序而不是连接到新的事件处理程序?

OnInit 中删除Click += WebPaymentButton_Click 行并删除WebPaymentButton_Click 函数,然后将以下代码添加到您的类中:

protected override void OnClick(ImageClickEventArgs e)
{
    base.OnClick(e);
    HttpContext.Current.Response.Redirect("http://dummy_payment_page_in_place_of_code", true);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2012-12-17
    • 2021-08-31
    • 2013-12-26
    • 1970-01-01
    相关资源
    最近更新 更多