ASP.NET MVC路由扩展:链接和URL的生成(7)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:48 点击:
 

 

四、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);

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • C#高级编程:数据库连接[1]
  • asp.net 设置GridView的选中行的实现代码
  • 经典C++程序1
  • IIS 自动回收导致后台定时器失效的问题解决
  • ASP.NET&#160;GridView列表代码示例
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1