シナリオ:Webサイトのすべてのページの上部に、いくつかのボタンで構成されるメニューバーがあります。一部のページには、同じことを行う同じ量のボタンがあります(たとえば、ページへのリダイレクト)が、一部のボタンは、現在ページにある情報に依存しています。問題:ページごとに処理できるように、コントロールのボタンをオーバーライドできるようにしたいと思います。また、イベントを使用して、そのように処理する方が簡単かもしれないと考えていました。これらのアプローチのいずれかが可能であり、そうでない場合は代替手段がありますか?
私が現在持っているコードは以下の通りです
aspxページで
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim myMenu As MenuBar
myMenu = CType(Master.FindControl("MenuBar1"), MenuBar)
myMenu.ShowButtons(MenuBar.Buttons.NewOrganization, MenuBar.Buttons.NewEquipment, MenuBar.Buttons.ChangeEquipmentOwner, MenuBar.Buttons.ChangeEquipmentLocation)
End If
End Sub
ascxコントロール
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
RaiseEvent myEvent(sender, e)
End If
End Sub
Public Sub ShowButtons(ByVal ParamArray args() As Buttons)
For i As Integer = 0 To args.GetUpperBound(0)
SetVisible(args(i))
Next
End Sub
Public Enum Buttons
NewOrganization = 1
NewEquipment = 2
ChangeEquipmentOwner = 3
ChangeEquipmentLocation = 4
UnderDevelopment = 5
CheckoutEquipment = 6
EditDocument = 7
CreateEquipmentLoanForm = 8
End Enum
Private Sub SetVisible(ByVal btn As Buttons)
Select Case (btn)
Case 1
btnNewOrganization.Visible = True
Case 2
btnNewEquipment.Visible = True
Case 3
btnChangeOwner.Visible = True
Case 4
btnChangeLocation.Visible = True
Case 5
btnUnderDevelopment.Visible = True
Case 6
btnCheckoutEquipment.Visible = True
Case 7
btnEditDocument.Visible = True
Case 8
btnCreateEquipment.Visible = True
End Select
End Sub