`
bingya
  • 浏览: 57930 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Net 4.0的UrlRouting实现友好的URL

 
阅读更多

在.Net 4.0之前我们为了做出搜索引擎友好的,对用户也友好的url都是需要自己实现Url重写,现在不需要了,.Net 4.0为我们做这一切。UrlRouting之所以称之为Routing是因为它不但实现了Url重写还可以通过参数得到重写后的Url在页面上使用。

1. Url Routing 的通常用法

UrlRouting在Asp.Net Mvc项目中被广泛使用,在Mvc中很好用,所以移植到了webform中,我们先看下在webform中的使用方式

假定一个使用场景:我们需要做博客每日文章的页面,我们希望的url地址是:/archive/2010/05/10/default.aspx

这个地址将被映射到~/posts.aspx文件上

要使用UrlRouting,需要将UrlRouting的规则注册到RouteTable中,如下Global文件中注册Routing规则的代码

 

以下为引用的内容:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{resource}.axd/{*pathInfo}");

    routes.MapPageRoute("blogs", //给这个UrlRouting规则起一个名字
        "archive/{year}/{month}/{date}/default.aspx", //希望的友好Url地址格式
        "~/blogs.aspx", //映射到的aspx页面路径
        false, //是否需要检查用户权限
        new RouteValueDictionary{ { "year", DateTime.Now.Year },
            { "month", DateTime.Now.Month },
            {"date", DateTime.Now.Date}
        },//参数的默认值
        new RouteValueDictionary { 
            {"year",@"(19|20)\d{2}"},
            {"month",@"\d{1,2}"},
            {"date",@"\d{1,2}"}
        } //参数的规则,我们在这里限制url中的年月日是我们想要的数据格式
        );

}

void Application_Start(object sender, EventArgs e)
{
    //在Application_Start时注册的Routing规则
    RegisterRoutes(RouteTable.Routes);
}

 

2. 在页面中使用UrlRouting参数值

1) 在后台代码中使用Route的值

 

以下为引用的内容:

protected void Page_Load(object sender, EventArgs e)
{
    string year = (string)RouteData.Values["year"];
    string month = (string)RouteData.Values["month"];
    string date = (string)RouteData.Values["date"];
}

 

2) 在页面上使用

 

以下为引用的内容:

<asp:Literal ID="literalYear" runat="server" Text="<%$RouteValue:year %>"></asp:Literal>
    -<asp:Literal ID="literal1" runat="server" Text="<%$RouteValue:month %>"></asp:Literal>
    -<asp:Literal ID="literal2" runat="server" Text="<%$RouteValue:date %>"></asp:Literal>

 

3) 在DataSource中使用RouteParameter

 

以下为引用的内容:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDb %>"
    SelectCommand="SELECT BlogID,BlogTitle FROM Blogs Where Category = @category">
    <SelectParameters>
        <asp:RouteParameter Name="category" RouteKey="category" />
    </SelectParameters>
</asp:SqlDataSource>

 

4) 在页面上显示RouteUrl

 

以下为引用的内容:

<a href='<%=GetRouteUrl("blogs",new {year=2010,month=05,date=05}) %>'>2010年5月1日的博客</a>

 

3. UrlRouting和UrlRewrite的区别

UrlRouting相对于Url重写是一个比较新的事物,UrlRouting的长处是可以做双向转换,既可以做url重写,还可以根据一些参数获得重写后的Url地址,但是它也有自己的不足之处,比如说如果你想连域名一起重写,比如博客地址yukaizhao.cnblogs.com这样的重写,UrlRouting就做不到了,只能用UrlRewrite。

分享到:
评论

相关推荐

    asp.net c# Url重写和无扩展名Url重写

    3. 示例代码文件:展示了如何在C#中实现URL重写逻辑,可能包括创建路由规则、定义路由约束等。 4. 说明文档或者示例页面:解释了如何使用这些源码以及可能遇到的问题。 为了实现URL重写和无扩展名URL重写,你需要做...

    asp.net 4.0 编程

    6. **路由(Routing)**:ASP.NET 4.0引入了URL路由功能,使得可以创建更加友好的、可自定义的URL,增强了用户体验和搜索引擎友好性。 7. **配置和部署**:ASP.NET 4.0提供了强大的配置管理工具,允许开发者在不...

    MVC4.0源码

    这允许我们创建友好的、可自定义的URL结构。 5. **过滤器(Filters)**: 过滤器是MVC4.0中的一个强大特性,用于在控制器操作前后执行特定的逻辑,如授权、异常处理、日志记录等。过滤器可以通过`[Authorize]`、`...

    MvcMusicStore4.0

    4. **路由(Routing)**:ASP.NET MVC的路由系统允许开发者定义URL模式,使得URL更加语义化,同时也方便配置请求的处理方式。 5. **身份验证与授权(Authentication & Authorization)**:MvcMusicStore 4.0可能会...

    System.Net.Http.Formatting 4.0各版本

    2. **路由(Routing)**:定义了如何将URL映射到操作。默认情况下,ASP.NET Web API使用基于HTTP动词(GET、POST等)和URL路径的路由规则。 3. **模型绑定(Model Binding)**:自动将请求的数据与操作方法的参数...

    asp.net mvc 4.0 框架揭秘书和源码

    4. **路由(Routing)**:ASP.NET MVC的路由系统允许自定义URL模式,使得URL更加用户友好且易于SEO优化。路由根据URL规则将请求映射到相应的控制器和动作。 5. **过滤器(Filters)**:过滤器是一种可重用的组件,...

    MVC4.0中文教程和英文教程

    控制器方法通常称为“动作”,它们可以通过路由系统与URL关联,实现URL到功能的映射。 4. **路由(Routing)**:ASP.NET MVC4.0的路由系统允许开发者自定义URL模式,使得URL更加语义化,提高用户体验。路由规则在...

    asp.net mvc基础入门

    3. **URL Routing**:通过Controller控制程序请求,并利用内置的URL Routing机制重写URL,实现更友好的URL结构。 4. **单元测试**:MVC框架支持单元测试,所有组件基于接口,便于模拟测试,提高开发效率。 5. **团队...

    Asp.net高级编程MVC4.0(英文版)

    Authorization, and Security)、Ajax、路由(Routing)、NuGet包管理、*** Web API、依赖注入(Dependency Injection)、单元测试(Unit Testing)、MVC的扩展(Extending MVC)、高级主题(Advanced Topics)以及...

    Rails101_by_rails4.0

    为了确保读者能够通过实践加深理解,书中还安排了一系列练习作业,从最基础的“Hello World”开始,逐步过渡到更复杂的概念,如Rails的Routing(路由)机制。路由机制是Web应用中一个非常核心的概念,它定义了不同的...

    ASP.NET中搜索引擎友好的URL

    3. **`System.Web.Routing`命名空间**:在.NET Framework 4.0及以上版本中,引入了`System.Web.Routing`命名空间,提供了对URL路由的支持。开发者可以通过注册路由规则来实现URL重写。 4. **配置URL重写规则**:在`...

    利用httphandler实现网站伪静态

    在ASP.NET中,可以使用`System.Web.Routing`库来实现URL路由。在Global.asax文件中,我们可以添加以下代码: ```csharp protected void Application_Start(object sender, EventArgs e) { RegisterRoutes...

    ASP.NET MVC Framework Unleashed

    - 合理地设计路由规则可以提高URL的友好性和可读性。 5. **身份验证与授权**: - 身份验证用于确认用户的身份,而授权则确定用户可以访问哪些资源。 - ASP.NET MVC提供了多种内置的身份验证和授权机制,如Forms ...

    TCP/IP v4.0 讲义(DOC&PPT)

    《TCP/IP v4.0 讲义》是一个深入解析TCP/IP协议族的教育资源,包含了DOC文档和PPT演示文稿,旨在帮助学习者理解和掌握网络通信的基础知识。这份讲义的特点是“简单明了”,适合初学者入门或者作为复习资料。 在TCP/...

    Symfony 高性能php框架 v4.0 RC1

    3. **依赖注入容器**:Symfony 的依赖注入容器允许开发者明确声明服务及其依赖关系,从而实现松耦合和代码的可测试性。这使得配置和管理复杂应用的组件变得简单。 4. **模板引擎**:虽然“简单的模板功能”在描述中...

    web httpmode test

    这可以通过使用ASP.NET的URL重写模块来实现。下面将详细介绍如何设置和使用URL重写来达成这个目标。 首先,我们需要了解ASP.NET URL重写的两个主要工具:`System.Web.Routing`类库和IIS URL重写模块。`System.Web....

    asp.net 伪链接实例(完整版)

    首先,要实现ASP.NET的伪链接,我们需要对路由(Routing)进行配置。在Global.asax文件中,我们可以定义一个路由规则,例如: ```csharp void Application_Start(object sender, EventArgs e) { RouteTable.Routes...

    ASP.NET的33种常用技巧

    URL重写能提供更友好的URL,同时有利于SEO,通过RouteTable类可以自定义路由规则。 10. **主题和皮肤(Themes and Skins)** 主题和皮肤允许全局改变网站的外观,通过更改主题文件,可以快速调整网站的整体风格。...

    Ext MVC 项目示例

    6. **路由(Routing)**: 路由在EXT MVC中用于处理URL和应用程序状态之间的映射。通过定义路由规则,可以实现页面间的导航和状态恢复。 7. **应用程序(Application)**: 整个EXT MVC应用是通过`Ext.application`...

    商业源码-编程源码-MVC2.0项目模板源码.zip

    在源码中,可能会看到使用接口和实现类的实例化,以及第三方DI库的使用,如Unity或Ninject,帮助解耦代码,提高可测试性和可扩展性。 **其他关键概念** - **验证(Validation)**:MVC2.0支持客户端和服务器端验证...

Global site tag (gtag.js) - Google Analytics