• [转]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

  • 相关阅读:
    javascript前端如何使用google-protobuf
    【Linux】Linux中常用操作命令
    MyEclipse 安装svn 插件步骤详情
    MultipartFile(文件的上传)--CommonsMultipartResolver
    oracle sql 获取本季度所有月份,上季度所有月份
    git与github安装、配置
    Java使用JaxWsDynamicClientFactory和HttpURLConnection两种方式调取webservice的接口
    三级联动
    Excel的两种导出入门方法(JAVA与JS)
    页面设置遮罩层
  • 原文地址:https://www.cnblogs.com/freeliver54/p/5584013.html
Copyright © 2020-2023  润新知