ASP.Net MVC探索之路 – 減少Html.RouteLink或Url.RouteUrl使用次數

來源:互聯網
上載者:User
本文沒什麼技術含量,正適合放在目前狀況下的部落格園首頁。

首先定義一條路由規則:

        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產生效能的分析。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.