zoukankan      html  css  js  c++  java
  • [转]Asp.net MVC 利用PartialView 构造自定义菜单

    本文转自:http://www.cnblogs.com/huyq2002/archive/2012/01/06/2314838.html

    在VS2010中利用Asp.net MVC自带的模板生成的菜单是固定的,没办法更改,下面利用PartialView实现简单的一级菜单。

    1) 修改_Layout.cshtml,在<nav>部分改成@{ Html.RenderAction("Menu", "Home");}

    <div class="float-right">
          <section id="login">
                @Html.Partial("_LogOnPartial")                      
          </section>
                  <nav>   
                     @{ Html.RenderAction("Menu", "Home");}                       
                  </nav>
    </div>

      MVC将会调用HomeController的Menu方法来显示菜单

    2)在HomeController里面添加Menu方法,返回PartialView

    复制代码
    public PartialViewResult Menu()
    {
    List<MenuItem> menus = new List<MenuItem>();
    menus.Add(new MenuItem{ Text="Home", Controller="Home", Action="Index"});
    menus.Add(new MenuItem { Text = "Job", Controller = "Job", Action = "Index" });
    menus.Add(new MenuItem { Text = "About", Controller = "Home", Action = "About" });
    menus.Add(new MenuItem { Text = "Contact", Controller = "Home", Action = "Contact" });
    return PartialView(new MenuModel { Menus = menus });
    }
    复制代码

    其中:MenuItem为新添加的自定义的Class

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI.WebControls;
    
    namespace MVCDemo.Models
    {
    
        public class MenuItem
        {
            public string Text { get; set; }
            public string Controller { get; set; }
            public string Action { get; set; }
        }
        
    
        public class MenuModel
        {
            public List<MenuItem> Menus { get; set; }
        }
    }

    3) 定义一个新的PartialView ,名称为Menu.cshtml,基于原来自动生成的代码修改为:

    @model MVCDemo.Models.MenuModel
    <ul id="menu">
        @foreach (var item in Model.Menus)
        {
        <li>@Html.RouteLink(item.Text, new { controller = item.Controller, action = item.Action })</li>
        }
    </ul>

    利用PartialView可以实现自定义多级菜单,并且权限控制也很容易。 

    完整代码如下:

     http://files.cnblogs.com/huyq2002/MVCDemo.zip

     运行该示例可能需要安装asp.net MVC4

  • 相关阅读:
    【Blazor】在ASP.NET Core中使用Blazor组件
    Github和Azure DevOps的代码同步
    【.NET Core】在Win10中用VS Code debug
    【UWP】利用EF Core操作SQLite
    【ASP.NET Core】mdl conflicts with tinymce
    【Windows10】如何使用Segoe MDL2 Assets图标
    Docker安装及使用,Docker 安装MySQL、安装Tomcat、安装RabbitMQ
    Anaconda安装常用配置及命令
    MySQL获取周、月、天日期,生成排序号
    Linux常用查询命令
  • 原文地址:https://www.cnblogs.com/freeliver54/p/5584013.html
Copyright © 2011-2022 走看看