MVC4商城项目三:分部视图在导航条上的应用
写了几天发觉大部分时间用在JS上了,本来想写个musicstore,却加了框架,然后又想用后台,然后又想用上bootstrapt,然后又想弄权限设计,然后又想…………
看来是想多了~
好吧,最近把后台搭起来了,用了metronic.bootstrap, 真心很强大。功能很多,为了节约时间成本就在它上面改吧。先上图看看
框架演示地址:http://dreamsky.github.io/main/blog/metronic-bootstrap/index.html
下载地址:http://dreamsky.github.io/main/blog/metronic-bootstrap/metronic.bootstrap.rar
来自分享:梦想天空
要实现导航条和菜单栏的功能,我用到了分部视图,就当是WEBFORM的用户控件来理解吧。
先看一下实体模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class UrlConfigDto { public int Id { get ; set ; } public string UrlName { get ; set ; } public string Url { get ; set ; } public int PageLev { get ; set ; } public int LevOrder { get ; set ; } public int UrlRole { get ; set ; } public string Icon { get ; set ; } public int POrder { get ; set ; } } |
我想把<URL,UNAME>绑定在视图上,所以我的Service层返回的是List<string>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public List< string > GetMeunTool( int orderId) { List< string > dic = new List< string >(); UrlConfig urlConfig= _urlConfigRepository.GetFiltered(a => a.LevOrder == orderId).FirstOrDefault(); if (urlConfig== null ) { return null ; } dic.Add(urlConfig.UrlName+ "^" +urlConfig.Url+ "/" +urlConfig.LevOrder); for ( int i = 0; i < urlConfig.PageLev-1; i++) { UrlConfig tem = _urlConfigRepository.GetFiltered(a => a.LevOrder == urlConfig.POrder).FirstOrDefault(); dic.Add(tem.UrlName + "^" + tem.Url+ "/" + tem.LevOrder ); urlConfig.POrder = tem.LevOrder; } return dic; } |
创建分部视图,传递数据模型:
1 2 3 4 | public PartialViewResult MeunTool( int id) { return PartialView(_urlService.GetMeunTool(id)); } |
来看看视图页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @model List< string > @ if (Model == null ) { <h3 class = "page-title" >主页</h3> <ul class = "breadcrumb" > <li> <i class = "icon-home" ></i> <a href= "/Admin/Admin" >主页</a> </li> </ul> } else if (Model.Count == 1) { <h3 class = "page-title" >@Model[0].Split( '^' )[0] </h3> <ul class = "breadcrumb" > <li> <i class = "icon-home" ></i> <a href= "/Admin/Admin" >主页</a> <i class = "icon-angle-right" ></i> </li> <li><a href= "@Model[0].Split('^')[1]" >@Model[0].Split( '^' )[0]</a></li> </ul> } |
其实我这里想用Dictionary<string,string> 的,不过PartialView()里不允许。
在模板页面我们就可以这样调用分部视图了:
1 2 3 4 | @{ int id = Convert.ToInt32(Html.ViewContext.RouteData.Values[ "id" ]); Html.RenderAction( "MeunTool" , "Admin" , new { id = id }); } |
说明一下这里的id的设计作用 ,这个ID是urlconfig表的惟一键,我用它来识别当前页的位置,如URL:http://localhost:11903/Admin/Admin/UserInfo/301
@Html.ViewContext.RouteData.Values["id"] 在视图页面可以直接接受到id传参
PS:想要当做项目做而不一个DEMO,在用户体验得下大功夫,JS是最耗时间的,有点拖垮人的节奏……
具体代码的实现,请参见 https://code.csdn.net/denghao156/ktnmb_mvc4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?