ASP.NET MVC 設定Title 的技巧(二)
- 2009-11-25
- 22913
- 0
現在SEO是網站開發人員越來越需要注意的部份了(或許加上這條可多收一點錢)Title是一個重要的部份之前有寫過【ASP.NET MVC 設定Title 的技巧】來說明在ASP.NET MVC內要怎麼動態變換Title,今天要來介紹進階一點的技巧。
依據之前寫的【ASP.NET MVC 設定Title 的技巧】是可以動態改變Title沒錯,但有些時候我們會希望首頁的Title是不一樣的,比如demo小舖的首頁 Title就和其他內頁不相同,所以用上面的方法就無法做到而且寫法還滿煩人的,有一堆地方要注意因此立刻來修改一下。
首先把MasterPage的「TitleContent」挖掉然後利用demo之前介紹的【ASP.NET MVC 判斷是否為指定頁面的 Helper】來去判定是否為首頁,因此整個Title標籤就變成這樣
<title> <%=Html.IsCurrentAction("Home","Index")?"demo小鋪 - 創作、分享、交流的園地":ViewData["PageTitle"]+" - demo小鋪" %> </title>
依據上面的寫法就是首頁的時候顯示demo小鋪 - 創作、分享、交流的園地,如果不是首頁就會出現由Controller指定的Title後面加上「- demo小鋪」,這樣子就不需要設定每一個View了比之前的方法更簡單了。
後端的Controller一樣是指定
ViewData["PageTitle"] = "測試文章頁面";
這樣就可以了。
看起來已經很好用了,但是還是有可以加強的部份,每次都要打ViewData["PageTitle"]還滿麻煩的,而且要是不小心打錯字就很難找問題了,因此在來介紹怎麼把它改成強式型別。
首先在Controller資料夾內建立一個新的Class,命名為BaseController,內容如下
using System; using System.Web.Mvc; namespace MvcApplication.Controllers { public class BaseController : Controller { public string PageTitle { set { ViewData["PageTitle"] = value; } } } }
然後開啟所有的Controller將最上面修改成繼承BaseController
//原本是直接繼承到Controller public class HomeController : Controller //改成繼承BaseController public class HomeController : BaseController
完成以上修改後就可以在每個Action使用PageTitle來指定 頁面的Title了
//ViewData["Title"] = "測試文章頁面"; PageTitle = "測試文章頁面";
使用了這種寫法,對於維護上相信是更方便的,畢竟鬆散型別的除錯難度是相對較高的。
回應討論