Handle Click Event for LinkButton in user control from ASP.NET parent page

I have a LinkButton inside User Control and it is being processed using

Private Sub LoginLinkLinkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginLinkLinkButton.Click
        Response.Redirect("/", True)
End Sub

On some ASPX pages, I would like to handle a click on the page code opposite inside the user control. How to override a handle to a control from parent code page by page?

Update: Based on the answer, I updated User Control:

Public Event LoginLinkClicked As OnLoginClickHandler
Public Delegate Sub OnLoginClickHandler(ByVal sender As Object, ByVal e As EventArgs)

[...]

Private Sub LoginLinkLinkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginLinkLinkButton.Click
        **If OnLoginClickHandler IsNot Nothing Then**
            RaiseEvent LoginLinkClicked(Me, e)
        Else
            Response.Redirect("/", True)
        End If
End Sub

The problem is determining the correct syntax for the if string, as the above is not valid.

+3
source share
2 answers

. , #, VB.Net, :

, UserControl:

public event OnLoginClickHandler LoginClick;
public delegate void OnLoginClickHandler (object sender, EventArgs e);

LinkButton Click:

protected void LoginLinkLinkButton_Click(object sender, EventArgs e)
{
    // Only fire the event if there a subscriber
    if (OnLoginClickHandler != null) 
    {
        OnLoginClickHandler(sender, e); 
    }
    else
    {
        // Not handled, so perform the standard redirect
        Response.Redirect("/", true);
    }
}

aspx:

<asp:LinkButton runat="server" ID="Foo" OnLoginClick="Foo_LoginClick" />

:

protected void Foo_LoginClick_Click(object sender, EventArgs e)
{
    // This event was fired from the UserControl
}

UPDATE

, VB.Net:

If LoginClick IsNot Nothing Then
    RaiseEvent LoginClick(sender, e) 
End If 
+3

, .

Parent Page aspx.cs part

public partial class getproductdetails : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
  Button btnYes = (Button)ucPrompt.FindControl("btnYes");
  btnYes.Click += new EventHandler(ucPrompt_btnYes_Click);
 }

 void ucPrompt_btnYes_Click(object sender, EventArgs e)
  {
    //Do Work
  }
}

, (): -

usercontrol asp.net

+1

Source: https://habr.com/ru/post/1755549/


All Articles