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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值