简体   繁体   English

带有子菜单项的asp.net菜单,后面的代码重定向

[英]asp.net menu with submenu items, redirect by code behind

I have a menu control with 2 levels of menu items! 我有一个菜单控件有2级菜单项! I would like to navigate via code behind OnMenuItemClick event because when i use NavigationUrl property my ajax UpdateProgress wont start! 我想通过OnMenuItemClick事件后面的代码导航,因为当我使用NavigationUrl属性时,我的ajax UpdateProgress不会启动!

The Problem is, whatever submenu item i click, when the event raises it gets every time the first item?! 问题是,无论我点击什么子菜单项,当事件提升时,每次第一项都会得到它?!

<asp:Menu ID="Menu1" runat="server" onmenuitemclick="Menu1_MenuItemClick" >
...
    <Items>
    <asp:MenuItem Text="WorkFlows">
    <asp:MenuItem Text="Overview" Value="Workflow"></asp:MenuItem>
    <asp:MenuItem Text="Edit" Value="Workflow"></asp:MenuItem>
    <asp:MenuItem Text="Create" Value="Workflow"></asp:MenuItem>
    <asp:MenuItem Text="Delete" Value="Workflow"></asp:MenuItem>
    </asp:MenuItem>

    <asp:MenuItem Text="HoursOfBusiness">
    <asp:MenuItem Text="Overview" Value="HoursOfBusiness"></asp:MenuItem>
    <asp:MenuItem Text="Edit" Value="HoursOfBusiness"></asp:MenuItem>
    <asp:MenuItem Text="Create" Value="HoursOfBusiness"></asp:MenuItem>
    <asp:MenuItem Text="Delete" Value="HoursOfBusiness"></asp:MenuItem>
    </asp:MenuItem>


    </Items>
    </asp:Menu>

protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
        {

            switch (e.Item.Value)
            {
                case "Workflow":
                    switch (e.Item.Text)
                    {
                        case "Overview":
                            Response.Redirect("~/RGS/Workflow/Workflow.aspx");
                            break;
                            case "Edit":
                            Response.Redirect("~/RGS/Workflow/WorkflowEdit.aspx");
                            break;
                            case "Create":
                            Response.Redirect("~/RGS/Workflow/WorkflowCreate.aspx");
                            break;
                            case "Delete":
                            Response.Redirect("~/RGS/Workflow/WorkflowDelete.aspx");
                            break;
                    }
                    break;
                case "HoursOfBusiness":
                    switch (e.Item.Text)
                    {
                        case "Overview":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                        case "Edit":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                        case "Create":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHoursCreate.aspx");
                            break;
                        case "Delete":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                    }
                    break;
            }

so when i click Create under HoursOfBusiness i get the Overview menuItem send to the event?! 所以当我点击HoursOfBusiness下的Create时,我会得到概述menuItem发送给活动?! I hope the explanation is understandable?! 我希望解释是可以理解的?! :-) :-)

This is how I solved this problem: 这就是我解决这个问题的方法:

<asp:Menu ID="Menu1" runat="server" OnMenuItemClick="Menu1_MenuItemClick">
    <Items>
        <asp:MenuItem Text="WorkFlows">
            <asp:MenuItem Text="Overview" />
            <asp:MenuItem Text="Edit" />
            <asp:MenuItem Text="Create" />
            <asp:MenuItem Text="Delete" />
        </asp:MenuItem>
        <asp:MenuItem Text="HoursOfBusiness">
            <asp:MenuItem Text="Overview" />
            <asp:MenuItem Text="Edit" />
            <asp:MenuItem Text="Create" />
            <asp:MenuItem Text="Delete" />
        </asp:MenuItem>
    </Items>
</asp:Menu>

And the code behind is like this: 而背后的代码是这样的:

protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
    bool hasParent = (e.Item.Parent != null);

    switch (hasParent)
    {
        case false:
            switch (e.Item.Value)
            {
                case "WorkFlows":
                    Response.Redirect("~/RGS/Workflow/Workflow.aspx");
                    break;
                case "HoursOfBusiness":
                    Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                    break;
            }
            break;
        case true:
            switch (e.Item.Parent.Value)
            {
                case "WorkFlows":
                    switch (e.Item.Value)
                    {
                        case "Overview":
                            Response.Redirect("~/RGS/Workflow/Workflow.aspx");
                            break;
                        case "Edit":
                            Response.Redirect("~/RGS/Workflow/WorkflowEdit.aspx");
                            break;
                        case "Create":
                            Response.Redirect("~/RGS/Workflow/WorkflowCreate.aspx");
                            break;
                        case "Delete":
                            Response.Redirect("~/RGS/Workflow/WorkflowDelete.aspx");
                            break;
                    }
                    break;
                case "HoursOfBusiness":
                    switch (e.Item.Value)
                    {
                        case "Overview":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                        case "Edit":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                        case "Create":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHoursCreate.aspx");
                            break;
                        case "Delete":
                            Response.Redirect("~/RGS/Workflow/BusinessHour/BusinessHours.aspx");
                            break;
                    }
                    break;
            }
            break;

    }
}

Hopefully this will help you solve your problem. 希望这可以帮助您解决问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM