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

  • 相关阅读:
    推荐几款Silverlight Tools【转载】
    Emit Vs CodeDom
    Silverlight 中实现Service同步调用
    一个配置文件的Mapping
    Silverlight:获取ContentTemplate中的命名控件
    关于计划
    巧用异步委托解决异步并发问题
    我是如何学习NodeJs的 – 笔记1
    应用HttpHandler, Json, JQuery, ASP.Net UserControl等技术处理 Ajax 的解决方案
    关于程序员的那些事一个五年程序员的总结
  • 原文地址:https://www.cnblogs.com/freeliver54/p/5584013.html
Copyright © 2020-2023  润新知