ASP.NET MVC路由扩展:链接和URL的生成(7)
四、UrlHelper.RouteUrl V.S. HtmlHelper.RouteLink
不论是UrlHelper的Action方法,还是HtmlHelper的ActionLink,生成的URL都是通过一个路由表生成出来的,而在默认的情况下这个路由表就是通过RouteTable的静态属性Routes表示的全局路由表,换句话说,具体使用的总是路由表中第一个匹配的路由对象。但是在有的时候,我们需要针对注册的某个具体的路由对象来生成URL或者对应的链接,这时候就需要使用的UrlHelper和HtmlHelper的另外一组方法了。
如下面的代码片断所示,UrlHelper定义了一系列的RouteUrl方法。除了第一个重载之外,后面的重载都接受一个路由对象注册名称的参数routeName。和UrlHelper的Action方法一样,我们可以通过参数指定用于替换定义在URL模板中变量的RouteValueDictionary对象(routeValues),以及传输协议和主机名称(hostName)。
1: public class UrlHelper
2: {
3: //其他成员
4: public string RouteUrl(object routeValues);
5: public string RouteUrl(string routeName);
6: public string RouteUrl(RouteValueDictionary routeValues);
7: public string RouteUrl(string routeName, object routeValues);
8: public string RouteUrl(string routeName, RouteValueDictionary routeValues);
9: public string RouteUrl(string routeName, object routeValues, string protocol);
10: public string RouteUrl(string routeName, RouteValueDictionary routeValues, string protocol, string hostName);
11: }
对于没有指定路由对象注册名称的RouteUrl方法来说,它还是利用整个路由表进行URL的生成,如果显示指定了路由对象的注册名称,那么就会从路由表中获取相应的路由对象,如果该路由对象与指定的变量列表不匹配,则返回Null;否则返回生成的URL。
HtmlHelper也同样定义了类似的RouteLink方法重载用于实现基于指定路由对象的链接生成,具体的RouteLink方法定义如下。
1: public static class LinkExtensions
2: {
3: //其他成员
4: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, object routeValues);
5: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, string routeName);
6: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, RouteValueDictionary routeValues);
7: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, object routeValues, object htmlAttributes);
8: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, string routeName, RouteValueDictionary routeValues);
9: public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);
相关新闻>>
- 发表评论
-
- 最新评论 更多>>