熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Asp.net MVC中頁面標題的新解決方法

2013-11-13 10:28:38  來源: .NET編程 

  在 MVC 正式版中的模板頁中提供了<asp:ContentPlaceHolder ID=TitleContent runat=server />

  這樣可以讓你在每個View中獨立設定頁面標題(Title)不過這樣的弊端就是假如我的頁面標題是如下形式統一標題 副標題

  那麼要在每個View中都寫上日記頁面

  <asp:Content ID=Content ContentPlaceHolderID=TitleContent runat=server>
    CaraQ 日記
</asp:Content>

  相冊頁面

  <asp:Content ID=Content ContentPlaceHolderID=TitleContent runat=server>
    CaraQ 相冊
</asp:Content>

  ……

  假如有一天我要把其中的統一標題改一下那就得一個頁面一個頁面的去改太過麻煩而且這種命名標題的方法我認為也有背MVC的精神讓控制器決定視圖顯示的內容

  其實有更簡單的實現方法如下

  首先定義每個Controller的父類如下

  Code
 public class BaseController : Controller
 {
        private readonly string _titleFormat = CaraQ {};
        private string _title;

  protected string Title
        {
            get { return _title; }
            set { _title = value; }
        }

  protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            ViewData[Title] = stringFormat(_titleFormat Title);
            baseOnActionExecuted(filterContext);
        }
}
讓所有的Controller繼承這個父類設置頁面標題的方法只需要在Action中使用如下方式即可

  public class BlogController : BaseController
{
    public ActionResult Index()
    {
        thisTitle = 日記;
    }
}

  最後在模板頁中把TitleContent占位控件換成:

  <%=ViewData[Title] %>

  這樣就可以了看到這樣給頁面命名標題是不是就簡單多了在View中了不會有那個像

  <asp:Content ID=titleContent ContentPlaceHolderID=TitleContent runat=server></asp:Content>

  的控件了要修改統一標題時只需要修改BaseController中的_titleFormat字串就可以了


From:http://tw.wingwit.com/Article/program/net/201311/13769.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.