开篇

无论是 Asp.net 还是 MVC 中,想要设置网站的 Title 或者 Sitemap (不用控件)总是很麻烦。

Title 和 Sitemap 都是有关联的,所以有什么办法可以 Write once, run anywhere 呢?

先看一下效果和用法吧~

[效果]

[用法:Controller中]

[用法:View中]

[用法总结]

只要在 Controller 和 Action 上加上 Attribute 就可以设置当前 Controller 的 名字和 Action 的名字。

设置 Controller 和 Action 的属性

[NewPath("Demo", Controller = "Home", Action = "Index")]
public class HomeController : Controller
{[NewPath("首页", Controller = "Home", Action = "Index")]public ActionResult Index(){ViewData["Message"] = "欢迎使用 ASP.NET MVC!";return View();}public ActionResult About(){this.SetNewPath("关于", new { Controller = "Home", Action = "About" });return View();}
}

这里,我这个网站名是Demo,那我给所有的 Controller 都加上 Demo 这个名称和相关信息即可

然后,有两张页面,分别是“首页”和“关于”

那我只要在 Action 上加上他们的名称和相关信息即可

Q1:是否可以加多个 Attrubute?

A1:可以,而且可以设置 Order 来设置他们的顺序

Q2:我需要,网站名、首页、文章、文章标题 这样的路径怎么办?

A2:代码如下,除了可以在 Attrubute 中设置外,还可以在 Action 代码中设置,因为有些信息需要经过处理后才能得到

[NewPath("Demo", Controller = "Home", Action = "Index", Order = 1)]
[NewPath("首页", Controller = "Home", Action = "Index", Order = 2)]
public class HomeController : Controller
{[NewPath("新闻", Controller = "News", Action = "Index")]public ActionResult Detail(int? id){this.SetNewPath("新闻标题", new {Controller = "News", Action = "detail", id = id.Value});return View();}
}

在View中显示

一般把上图的代码放在 MasterPage 中,因为他们的用法都是调用同一个函数
 
除了上面提供的两个主要函数外,还有一个很自由的函数:
 
<h2><%=Html.GetSitemap() %></h2>
<h2><%=Html.GetWebPath("<a href=\"{1}\">{0}</a>", " / ") %></h2>

这里,只要传入显示模板和分隔符模板,就可以随意地自定义内容了

源代码和例子

下载地址

转载于:https://www.cnblogs.com/dozer/archive/2010/12/05/MVC-Title-and-Sitemap.html

利用Attribute扩展MVC的Title和Sitemap相关推荐

  1. attribute 扩展

    今天参考json-c的源码 读到一个关于attribute 扩展 static void json_object_init(void) __attribute__ ((constructor)); s ...

  2. 老雷socket编程之PHP利用socket扩展实现聊天服务

    老雷socket编程之PHP利用socket扩展实现聊天服务 socket聊天服务原理 PHP有两个socket的扩展 sockets和streams sockets socket_create(AF ...

  3. 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。

    8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...

  4. 利用ASP.NET MVC源代码调试你的应用程序

    之前写了一篇博客:利用.NET Framework4.0的源代码调试你的应用程序.那篇文章教你如何利用.NET Framework4.0的源代码帮助你调试应用程序,其实也就是进入.NET Framew ...

  5. 利用Spring扩展点模拟MyBatis的注解编程「知识点多多」「扩展点实战系列」- 第448篇

    历史文章(文章累计440+) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <国内最全的Spring Boot系列之三> ...

  6. 【Proteus仿真】利用74LS148扩展单片机中断

    [Proteus仿真]利用74LS148扩展单片机中断 Proteus仿真 74LS148:8 线-3 线优先编码器 74LS148是带有扩展功能的8-3线优先编码器,它有8个信号输入端,3个二进制码 ...

  7. 恶意网站可利用浏览器扩展 API,窃取浏览器数据

    恶意网站可以利用浏览器扩展 API,在浏览器内执行代码,来窃取用户敏感信息,比如用户书签.历史浏览记录和 cookies.在这之后,攻击者可能劫持用户的登陆会话.而敏感账户像是电子邮件.社交媒体或工作 ...

  8. 利用Attribute简化Unity框架IOC注入

    在我们的领域驱动设计(DDD)开发中,我们经常需要IOC框架使得我的框架依赖翻转,依赖抽象,避免直接new依赖于我们的具体实现.这些使得我们的框架整个项目结构不变,很方便的改变具体实现,使得项目提供可 ...

  9. 利用ASP.NET MVC 的默认类型绑定器---将Jquery datatables中的数据强类型绑定到实体类中

    背景描述: 本文参考资料:https://blog.csdn.net/honantic/article/details/45913403 阅读了上述博文后对我产生了启发,在ASP.NET MVC 5中 ...

最新文章

  1. HTML5/CSS3系列教程:使用SVG图片
  2. 个人博客mysql 建表与数据测试
  3. java bip-39_bip39
  4. 【面试必备】静态路由与配置相关知识点详解
  5. python调用函数示例_python 动态调用函数实例解析
  6. SQL Server 语句查询手册
  7. jmeter线程数并发数区别_如何确定Kafka的分区数、key和consumer线程数、以及不消费问题解决...
  8. JAVA 枚举类的初步理解
  9. Bluetooth篇 开发实例之六 蓝牙RSSI计算距离
  10. 【最小生成树】Prim算法和Kruskal算法的区别对比
  11. centos 卸载_9个Linux发行版本,教你如何分别使用命令行卸载安装包
  12. 腾达Tenda 路由器后门分析
  13. NAS组建日记(二):为了玩得自由,还是DIY个NAS机吧
  14. HTML基础(一)HTML标签
  15. wp网站,wordpress网站搭建,wp网站建设教程
  16. Vue前端文本对比DIFF
  17. 为什么开软件计算机停止工作原理,出现一个问题,导致程序停止正常工作 请关闭该程序...
  18. 使用java搭建简单的ligerui环境
  19. ZZNUOJ_C语言1032:员工薪水(完整代码)
  20. 完成清除工作,可以Destory窗口标志

热门文章

  1. g++ 安装python_卧槽,又一款Python神器
  2. Java笔记-SSLSocket双向认证实例
  3. 系统架构师学习笔记-系统开发基础知识(一)
  4. C++ opengl 放置摄像机
  5. C/C++中Windows API 简单的(Callback)回调机制
  6. 4.3串的模式匹配算法(BF算法)
  7. onenote 思维导图_学生党做笔记,我为什么更推荐OneNote?看后你就明白了
  8. 推动半导体产业发展,华微电子CCT MOS产品发布
  9. 手机端测试时用的几个软件
  10. Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待