天天看點

(轉)System.Web.Mvc.UrlHelper的學習與使用

轉載自http://www.cnblogs.com/longgel/archive/2010/02/06/1664884.html

上一次學習了htmlhelper幫助類,這次我們學習一下urlhelper幫助類,看類名也都知道這個類是用來幫我們生成url在asp.net

mvc應用程式中。讓我們來看看該類給我們帶來了哪些友善的方法和屬性,urlhelper提供了四個非常常用的四個方法,

1.action方法通過提供controller,action和各種參數生成一個url,

2.content方法是将一個虛拟的,相對的路徑轉換到應用程式的絕對路徑,

3.encode方法是對url位址進行加密,與server.encode方法一樣。

4.方法是提供在目前應用程式中規定的路由規則中比對出url。

另外還有兩個屬性,分别是requestcontext和routecollection兩個屬性,分别指的是包含http上下文和routedata兩個屬性,另外,routecollection是整個目前應用程式中規定的路由規則。

下面對上面的方法使用寫成代碼看

    <div>

    1.使用action方法生成url(controller将是預設的)<br />

    <a href=‘<%= url.action("demoaction") %>‘ title="">指定action名稱生成url</a><br />

    <a href=‘<%= url.action("demoaction","id") %>‘ title="">指定action和一個routedata(參數)生成url</a><br />

    <a href=‘<%= url.action("demoaction", new {id=2,category=5 })%>‘ title="">指定action名稱和多個參數生成url</a><br />

    <a href=‘<%= url.action("demoaction","democontroller")%>‘ title="">指定action和controller生成url</a><br />

    <a href=‘<%= url.action("demoaction","democontroller","id")%>‘ title="">指定action,controller和一個參數生成url</a><br />

    <a href=‘<%= url.action("demoaction","democontroller", new {id=2,category=5 })%>‘ title="">指定action,controller和多個參數生成url</a><br />

    <a href=‘<%= url.action("demoaction","democontroller", new {id=2,category=5 },"https")%>‘ title="">指定傳輸協定生成url</a><br />

    <% var rvd = new routevaluedictionary();

       rvd.add("id", 5);

       rvd.add("category", 2);

       var tmp = 5;  %>

    <a href=‘<%= url.action("demoaction","democontroller", rvd,"https","local")%>‘ title="">指定主機名生成url</a><br /><br />

    2.使用content方法将虛拟(相對)路徑生成為絕對路徑<br />

    <a href=‘<%= url.content("~/democontroller/demoaction")%>‘ title="">指定虛拟路徑生成絕對路徑</a><br /><br />

    3.使用encode加密url<br />

    <a href=‘<%= url.encode("http://www.cnblogs.com/longgel/")%>‘ title="">加密過的url連接配接</a><br /><br />

    4.使用routeurl生成url<br />

    <a href=‘<%= url.routeurl(tmp)%>‘ title="">指定routevalue生成url</a><br />

    <a href=‘<%= url.routeurl("default")%>‘ title="">指定routename生成url</a><br />

    <a href=‘<%= url.routeurl(rvd)%>‘ title="">指定多個參數生成url</a><br />

    <a href=‘<%= url.routeurl("default",tmp) %>‘ title="">指定路由規則名和單個路由值</a><br />

    <a href=‘<%= url.routeurl("default",rvd) %>‘ title="">指定路由規則名和多個路由值</a><br />

    <a href=‘<%= url.routeurl("default",tmp,"https") %>‘ title="">指定傳輸協定</a><br />

    <a href=‘<%= url.routeurl("default",rvd,"https","www.cnblogs.com") %>‘ title="">指定主機名</a><br />        

    </div>

看看生成之後的html頁面中的url

    <a href=‘/simple/demoaction‘ title="">指定action名稱生成url</a><br />

    <a href=‘/id/demoaction‘ title="">指定action和一個routedata(參數)生成url</a><br />

    <a href=‘/simple/demoaction?id=2&category=5‘ title="">指定action名稱和多個參數生成url</a><br />

    <a href=‘/democontroller/demoaction‘ title="">指定action和controller生成url</a><br />

    <a href=‘/democontroller/demoaction?length=2‘ title="">指定action,controller和一個參數生成url</a><br />

    <a href=‘/democontroller/demoaction?id=2&category=5‘ title="">指定action,controller和多個參數生成url</a><br />

    <a href=‘https://localhost/democontroller/demoaction?id=2&category=5‘ title="">指定傳輸協定生成url</a><br />

    <a href=‘https://local/democontroller/demoaction?id=5&category=2‘ title="">指定主機名生成url</a><br /><br />

    <a href=‘/democontroller/demoaction‘ title="">指定虛拟路徑生成絕對路徑</a><br /><br />

    <a href=‘http%3a%2f%2fwww.cnblogs.com%2flonggel%2f‘ title="">加密過的url連接配接</a><br /><br />

    <a href=‘/simple/urlhelperdemo‘ title="">指定routevalue生成url</a><br />

    <a href=‘/longgel/index/id‘ title="">指定routename生成url</a><br />

    <a href=‘/simple/urlhelperdemo?id=5&category=2‘ title="">指定多個參數生成url</a><br />/longgel/index/id<br />

    <a href=‘/longgel/index/id‘ title="">指定路由規則名和單個路由值</a><br />

    <a href=‘/longgel/index/id?id=5&category=2‘ title="">指定路由規則名和多個路由值</a><br />

    <a href=‘https://localhost/longgel/index/id‘ title="">指定傳輸協定</a><br />

    <a href=‘https://www.cnblogs.com/longgel/index/id?id=5&category=2‘ title="">指定主機名</a><br />