На мой взгляд, вы должны поднять событие из UC_Menu.ascx, а затем обработать его на главной странице и снова активировать событие с главной страницы. Наконец, вы можете перехватить событие с обработчиком событий в Customer.aspx и вызвать функцию из UC_Details.ascx.
Таким образом, код для этой проблемы должно быть:
1) Внутри вашего UC_Menu.ascx.vb поднять событие:
Partial Class UserControls_UC_Menu
Inherits System.Web.UI.UserControl
Public Event SomethingChanged As EventHandler
Public Sub SomethingHappend()
RaiseEvent SomethingChanged(Me, EventArgs.Empty)
End Sub
End Class
2) В случае Master страница улове и поднять его Заказчику .aspx
Public Event SomethingChanged As EventHandler
Private Sub UC_MenuInstance_SomethingChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UC_Menu.SomethingChanged
RaiseEvent Me.SomethingChanged(Me, EventArgs.Empty)
End Sub
3) Определить в Customer.aspx разметке после директивы страницы:
<%@ MasterType VirtualPath="~/MasterPages/MainLayout.master" %>
4) Внутри UC_Details.ascx.vb определить какой-то метод, который должен быть вызван:
Public Sub DoWork()
'Do some work here
End Sub
5) Поместите в Customer.aspx.vb:
' Add handler for Master page event
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
AddHandler Me.Master.SomethingChanged, AddressOf MasterEventHandler
End Sub
' Call UC_Details user control function here
Private Sub MasterEventHandler(ByVal source As Object, ByVal e As EventArgs)
UC_DetailsInstance.DoWork()
End Sub
Не могли бы вы уточнить? – crjunk
Как я понимаю, UC_Menu.ascx принадлежит к главной странице. Эффективная практика заключается в том, чтобы общаться с дочерним элементом управления родительским событием. Итак, вы должны поднять событие в UC_Menu.ascx и обработать его в коде главной страницы. Затем мы должны понимать, что страница мастера ничего не знает об этой странице контента. Таким образом, единственный возможный способ связи с главной страницы на страницу контента - снова поднимать событие с главной страницы. Затем вы должны установить в обработчике событий Customer.aspx для этого события и внутри обработчика событий вы должны вызвать требуемую функцию на UC_Details.ascx, которая является дочерней на странице Customer.aspx. – apros
Я новичок в использовании RaiseEvent, поэтому я пытался его прочитать.Можете ли вы объяснить, как настроить код в Master, чтобы сделать что-то простое, например, изменить текст метки на главной странице? – crjunk