`
javahigh1
  • 浏览: 1288445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

创建路由约束(C#)

阅读更多

使用路由约束来限制匹配特定路由的浏览器请求。可以使用正则表达式来指定约束。

例如,假设你在代码1的Global.asax文件中已经定义了如下路由。

代码1 – Global.asax.cs

代码1 约束了一个名为Product的路由。可以使用Product路由来将浏览器请求影射到约束ProductController,如代码2。

代码2 – Controllers\ProductController.cs

注意有Product控制器暴露的 Details() action 接受一个名为productId的简单参数。这个参数是一个整形参数。

代码1中定义的路由还匹配如下URL:

  • /Product/23
  • /Product/7

但是路由并不匹配以下 URL:

  • /Product/blah
  • /Product/apple

因为 Details() action 需要一个整形参数,所以发送一个包含其它东西而不是整形值的请求的话会导致一个错误。例如,如果你在浏览器中输入 URL /Product/apple 那么你就会得到如图1所示的错误。The New Project dialog box

图01: 看到页面挂了(点击查看完整大小)

只要将URL包含一个正确的整形productId就可以了。当定义一个要限制匹配路由的URL时你就可以使用约束。代码3中是修改后的 Product路由,它包含一个只匹配整形的正则表达式约束。

Listing 3 – Global.asax.cs

正则表达式 \d+ 匹配一个或多个整形。这个约束使得 Product 路由匹配以下 URL:

  • /Product/3
  • /Product/8999

但以下 URL 不行:

  • /Product/apple
  • /Product

这些浏览器请求会被其他路由处理,或者,如果没有匹配的路由,会返回无法找到资源错误。

原文地址:http://www.asp.net/learn/mvc/tutorial-24-cs.aspx

分享到:
评论

相关推荐

    webapi-routeconstraintversioning:使用路由约束在 WebAI 中进行版本控制

    1. **创建自定义路由约束**:首先,我们需要创建一个实现了 `IRouteConstraint` 接口的类,该接口有一个 `Match` 方法,用于检查路由段是否符合约束条件。在这个类中,我们可以编写逻辑来验证版本号的有效性,比如...

    C# Exercise Answers C# Exercise Answers

    2. **类与对象**:学习如何创建和使用类,理解类的构造函数、属性、方法和封装的概念。同时,对象的实例化、继承和多态也是重点。 3. **数组与集合**:掌握一维和多维数组的使用,了解ArrayList和List的区别,以及...

    基于C#MVC项目创建的各种数据处理

    在这个主题中,“基于C# MVC项目创建的各种数据处理”涵盖了从数据库交互、数据验证到数据展示等多个关键知识点。 1. **MVC架构**:MVC模式是一种设计模式,它将应用程序分为三个主要组件:模型(Model)、视图...

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

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

    c# 服务端调用RestFul Service的方法

    本文档将详细介绍如何使用 C# 创建和调用 RESTful 接口,包括 RESTful 的基本概念、如何构建 RESTful 风格的 API、服务端的具体实现步骤以及客户端如何调用服务端接口等内容。此外,还将提供详细的代码示例,以便...

    ASP.NET 路由实现去除aspx后缀

    // 创建一个新的路由实例 Route route = new Route( "{controller}/{action}/{id}", // URL模式,这里不包含aspx new RouteValueDictionary(new { controller = "Home", action = "Index", id = UrlParameter....

    C#面试(笔试)题合集

    5. **多线程**:线程的创建、同步和通信是面试中常见的问题,如Mutex、Semaphore、Monitor、Task、async/await关键字等。 6. **异常处理**:理解try-catch-finally语句,自定义异常,以及何时应该抛出或捕获异常。 ...

    第09章 链接和路由系统1

    1. 使用约束条件限制路由参数类型,避免无效的URL尝试。 2. 设置路由顺序,确保最常使用的路由优先匹配。 3. 使用缓存来减少路由解析的计算量。 4. 对于静态资源,考虑使用文件系统直接访问,以减轻路由系统负担。 ...

    C# 智能水滴算法实现

    1. 类和对象:C#是一种面向对象的语言,我们可以创建`WaterDrop`类来表示算法中的水滴,包含位置、能量等属性,以及蒸发、碰撞和扩散等方法。 2. 数据结构:为了存储和操作问题空间,可以使用数组、列表或图数据结构...

    C# .net面试题整理集合

    11. **Web API**:创建RESTful服务,处理HTTP请求和响应,理解路由规则和内容协商。 12. **单元测试与TDD**:使用 MSTest、NUnit 或 xUnit 进行单元测试,了解Test-Driven Development(TDD)的工作流程。 13. **...

    详解ASP.NET WEB API 之属性路由

    *** Web API属性路由是一...当标准约束不足以满足特定需求时,开发者可以创建自定义路由约束来实现更加精细的路由匹配。总之,属性路由机制增强了Web API的路由能力,为构建高效且用户友好的API接口提供了坚实的基础。

    Professional C# 5.0 and .NET 4.5.1源代码(23-47)

    7. **WCF(Windows Communication Foundation)**:这部分可能详细解释了如何创建和配置WCF服务,以及客户端如何消费这些服务,包括SOAP和RESTful服务的实现。 8. **ASP.NET MVC**:这一部分可能会介绍如何使用ASP...

    ASP.NET MVC:自定义 Route 让你的 Url 更优雅.

    除了简单的路径参数,还可以添加路由约束来限制参数的值。例如,你可以确保年份和月份是数字: ```csharp routes.MapRoute( "ArticleDetails", "articles/{year}/{month}/{title}", new { controller = "Article...

    C#数据库课程设计

    理解RESTful API的概念,如何定义路由,以及如何序列化和反序列化数据是必要的。 6. 安全性:确保数据安全是任何系统的重要考量。了解如何设置和管理用户权限,使用HTTPS加密通信,防止SQL注入攻击,以及对敏感信息...

    c#开发经验技巧总结演示源码3.rar

    2. **泛型**:C#的泛型允许创建可重用的类型安全的数据结构。文件中的源码可能展示了如何使用泛型类、泛型方法以及约束来提高代码的灵活性和效率。 3. **异常处理**:C#通过try-catch-finally语句块进行异常处理。...

    C#学习课件 从入门到经典

    5. **集合与泛型**:C#提供了丰富的集合类,如数组、ArrayList、LinkedList、Dictionary等,同时引入了泛型,使得数据类型的约束更加灵活且安全。 6. **LINQ(Language Integrated Query)**:C#的查询表达式,让...

    C#、.Net经典面试题目

    - **ASP.NET**:用于构建Web应用,了解MVC架构、路由、视图模型等。 - **WPF(Windows Presentation Foundation)**:用于桌面应用开发,涉及XAML语言和UI设计。 - **WF(Windows Workflow Foundation)**:处理...

Global site tag (gtag.js) - Google Analytics