我正在以编程方式添加菜单项,以便根据用户的角色控制出现哪些菜单项。我的问题是,我添加的每个菜单项都表现得像在加载过程中被点击一样。剥去裸骨,这是简化的代码:
Public Class test2
Inherits System.Web.UI.Page
Private Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
If Not IsPostBack Then
CreateMenu()
End If
End Sub
Private Sub CreateMenu()
MainMenu.Items.Add(New MenuItem("Home", "", "/Peak.aspx"))
End Sub
End Class
test2.aspx包含:
<form id="form1" runat="server">
<asp:Menu ID="MainMenu" runat="server" >
<Items>
</Items>
</asp:Menu>
</form>
这是Peak.aspx.vb中的所有代码:
Public Class Peak
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
MsgBox("This should not appear but does!!")
End Sub
End Class
当test2设置为启动页面时,正在加载Peak.aspx Page_Load并显示消息框。我的真实代码添加了几个菜单项,CreateMenu会导致所有page_Loads被大量开销触发!
这是一个错误或我可以关闭的东西,是否有解决方法?
答案 0 :(得分:1)
您正在使用此构造函数https://msdn.microsoft.com/en-us/library/b00a9c35.aspx
public MenuItem(
string text,
string value,
string imageUrl
)
如果仔细观察,第三个参数会设置imageurl,从而在尝试加载url时触发Page_Load事件。也许你想用4个参数来重载? https://msdn.microsoft.com/en-us/library/70k2h50z.aspx
public MenuItem(
string text,
string value,
string imageUrl,
string navigateUrl
)