asp.net mvc3 动态菜单怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net mvc3 动态菜单怎么实现相关的知识,希望对你有一定的参考价值。

/**
* 我要实现的效果是菜单栏里面只显示作为父项的菜单项
* 点击一个菜单项时,下拉菜单里面显示以这个项作为父项的所有子项
* 父项和子项的文本和链接都可以在后台更改
*/

asp.net mvc3 动态菜单实现方法如下:
1、查看代码
@
ViewBag.Title = "Elixir ERP V1.0 Beta";
Layout = "~/Views/Shared/_LayoutUser.cshtml";

<div class="main-container">
<div class="main-wrapper">
<div class="scroll-top">
<a href="#" class="tip-top" title="Go Top"><i

class="icon-arrow-up"></i></a>
</div>
<div class="left-bar merge-left">
<!-- SEARCH BAR -->
<!-- LEFT NAV -->
@section leftnav

</div>
</div>
<div class="container">
</div>
</div>

2、菜单模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Elixir.Models

public class Menu

public Menu()

MenuItems = new List<MenuItem>();


public int Id get; set;
public string Name get; set;
public List<MenuItem> MenuItems get; set;



3、菜单项
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Elixir.Models

public class MenuItem

public int Id get; set;
public int UserName get; set;
public string Name get; set;
public string ActionName get; set;
public string ControllerName get; set;
public string Url get; set;
public Menu ParentMenu get; set;



4、导航模型结构
<div class="left-nav">
<ul class="side-navigation accordion"
id="nav-accordion">
<li><a href="#"><i
class="icon-home"></i>Home</a></li>
<li><a href="#"><i class="icon-list-alt"></i>User
Management</a>
<ul><li><a href="#"><i
class="icon-double-angle-right"></i>Create New User</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Users</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>View Users</a></li>
</ul>
</li>
<li><a href="#"><i

class="icon-table-2"></i>Employee Management</a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Employee Registration</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Manage Employees</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>View Employees</a></li>
</ul>
</li>
<li><a href="#"><i class="icon-columns"></i>DMIT

Management</a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Scan Management</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Report Generation</a></li>
</ul>
</li>
<li><a href="#"><i

class="icon-laptop"></i>Franchise Management </a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Franchise Registration</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Franchise Fee Management</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Franchise Account

Management</a></li>
</ul>
</li>
<li><a href="#"><i class="icon-font"></i>Customer

Management </a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Customer Registration</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Manage Customer</a></li>
</ul>
</li>
<li><a href="#"><i

class="icon-cord"></i>Counseling Management</a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Add Counseling Session</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Manage Counseling

Sessions</a></li>
</ul>
</li>
<li><a href="#"><i

class="icon-tools"></i>Accounts</a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Manage Income</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Manage Expense</a></li>
</ul>
</li>
<li><a href="#"><i

class="icon-files"></i>Reports</a>
<ul>
<li><a href="#"><i

class="icon-double-angle-right"></i>Elxir Monthly Reports</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Elixir Yearly Reports</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Franchise Monthly

Reports</a></li>
<li><a href="#"><i

class="icon-double-angle-right"></i>Franchise yearly Reports</a></li>
</ul>
</li>
</ul>
</div>
参考技术A 1.递归方式,通过根元素(一级菜单),找到自己下面的节点元素(二级菜单),如果还用则继续查询(通过就是自己调用自己,一定要有终止条件,不然会堆栈溢出,多次与数据库交互)
2、一次性把数据查询出来,绑定到ztree(要json格式的数据)上,下面是简单的使用,具体看官网实例!追问

能不能帮我贴一个示例?或者发一个实例到我的邮。。。。箱。初学。

asp.net MVC动态路由

项目中遇到需要动态生成控制器和视图的。

于是就折腾半天,动态生成控制器文件和视图文件,但是动态生成控制器不编译是没法访问的。

找人研究后,得到要领:

1.放在App_Code文件夹内

2.不要命名空间

功能虽然实现了,可是觉得这个发放实在有些挫,心里老挂念这个事情。想着既然使用MVC,能不能实现动态路由访问呢?

果然找到两篇相关的文章,解决了问题:

1.http://www.cnblogs.com/gyche/p/5216361.html

2.http://stackoverflow.com/questions/16026441/dynamic-routes-from-database-for-asp-net-mvc-cms

具体使用,看过文章应该能懂。

 

事件感想:

技术这东西,如果不理解原理,就利用不到它的强大之处;

开发思路同样重要,要拆掉思维里的墙。

 

以上是关于asp.net mvc3 动态菜单怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

活动菜单项 - asp.net mvc3 母版页

asp.net 做导航 用menu控件,实现菜单横排,鼠标移动到菜单的一项上,向下弹出子菜单。这个效果的xml怎么

动态创建菜单子项[关闭]

asp.net框架页菜单控件无法正常显示

ASP.NET MVC3 - 将项目动态添加到对象的数组中

使用treeview控件读数据库动态生成带checkbox复选框的树形导航菜单asp.net(C#),急求帮助还可加分