Welcome 微信登录

首页 / 网页编程 / ASP.NET / 抛弃TitleContent - Asp.net MVC中页面标题的新解决方法

抛弃TitleContent - Asp.net MVC中页面标题的新解决方法2011-10-31 博客园 XiaoG在Asp.net MVC 1.0正式版中的模板页中提供了:

<asp:ContentPlaceHolder ID="TitleContent" runat="server" />
这样可以让你在每个View中独立设定页面标题(Title),不过这样的弊端就是假如我的页面标题是如 下形式:

统一标题 - 副标题

那么要在每个View中都写上:

日记页面:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">    CaraQ - 日记</asp:Content>
相册页面:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">    CaraQ - 相册</asp:Content>……
假如有一天我要把其中的统一标题改一下那就得一个页面一个页面的去改,太过麻烦,而且这种命名 标题的方法我认为也有背MVC的精神--让控制器决定视图显示的内容

其实有更简单的实现方法,如下:

首先定义每个Controller的父类如下:

 public class BaseController : Controller {        private readonly string _titleFormat = "CaraQ - {0}";        private string _title;        protected string Title        {            get { return _title; }            set { _title = value; }        }protected override void OnActionExecuted(ActionExecutedContext filterContext)        {            ViewData["Title"] = string.Format(_titleFormat, Title);            base.OnActionExecuted(filterContext);        }}