在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); } }