本文沒什麼技術含量,正適合放在目前狀況下的部落格園首頁。
首先定義一條路由規則:
string[] controllerNamespaces = new string[] { "Web.Controllers" };
routes.MapRoute(
"Details",
"Details/{productId}",
new {controller="Product", action="Details"},
new {productId = @"\d+" },
controllerNamespaces
);
以前產生連結是這麼做的:
foreach (var item in Model) {
Writer.Write(Html.RouteLink(item.Title, "Details", new { ProductId=item.ProductId}));
}
現在改為這樣了: string detailsLinkFormat = Html.RouteLink("{1}", "Details", new { ProductId=0 })
.ToString().Replace("0", "{0}");
StringBulder sb = new StringBuilder(Model.Count());
foreach (var item in Model) {
sb.Append(string.Format(detailsLinkFormat,item.ProductId,item.Title));
}
Writer.Write(sb.ToString());
首先產生一個連結地址:
<a href="/Details/0">{1}</a>
將“0”替換成“{0}”後就成了這樣:
<a href="/Details/{0}">{1}</a>
然後我們根據這個格式去產生新的連結地址即可。
簡潔起見,以上代碼沒進行Model空校正、Url編碼處理、Html編碼處理、列表格式化等。
另,老趙以前專門做過關於Url產生效能的分析。