[翻译:ASP.NET MVC 教程]创建路由约束

赶集要发http://www.ganji18.com

你使用路由约束来使浏览器请求限制在匹配特定路由的中。你可以使用一个正则表达式来具体化一个路由约束。

例如,设想你已在Global.asax文件中定义了清单1中的路由。

清单1——Global.asax.cs

routes.MapRoute(
"Product", "Product/{productId}", new {controller="Product", action="Details"}
);

清单1包含了一个名为Product的路由。你可以使用Product路由来将浏览器请求映射至清单2中的ProductController控制器中。

清单2——Controllers\ProductController.cs

using
System.Web.Mvc; namespace MvcApplication1.Controllers { public class
ProductController : Controller { public ActionResult Details(int productId) {
return View(); } } }

注意到由Product控制器所表示的Details()动作接受一个名为productId的单一参数。该参数为一整型参数。

定义于清单1中的路由将匹配任何下列的URLs:

·
/Product/23

·
/Product/7

不幸的是,该路由也将匹配下列URLs:

·
/Product/blah

·
/Product/apple

因为Detail()动作期待一个整型参数,做一个包含整型值以外的其它类型值的请求将导致一个错误。例如,如果你键入URL
/Product/apple到你的浏览器中,那么你将得到如图1所示的错误页面。

图1:出错页面

你真正想做的是仅匹配包含一个合适的整型productId。当定义一个路由来限制匹配该路由的URLs时,你可以使用一个约束。在清单3中被修改过的Product路由包含了一个只匹配整型的正则表达式约束。

清单3——Global.asax.cs

routes.MapRoute(
"Product", "Product/{productId}", new {controller="Product", action="Details"},
new {productId = @"\d+" } );

正则表达式\d+匹配一个或更多个整型数字。该约束使Product路由匹配下列URLs:

·
/Product/3

·
/Product/8999

而不是下列的URLs:

·
/Product/apple

·
/Product

这些浏览器请求将会被另一个路由处理,要不然如果没有匹配的路由,一个The
resource could not be found
的错误就会被返回。

[翻译:ASP.NET MVC 教程]创建路由约束,布布扣,bubuko.com

时间: 2024-10-11 18:04:33

[翻译:ASP.NET MVC 教程]创建路由约束的相关文章

【翻译】ASP.NET MVC 5属性路由

原文链接:http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#why-attribute-routing 最近在学习MVC相关的东西,今天刚好到msdn上看到了这样的一片文章,感觉不错,于是决定将它翻译出来和博友们一起分享下.我第一次发表文章,有不对的地方非常欢迎指出. —— 写在前面 废话不多说了,咱们开始吧 路由是ASP.NET MVC 怎样去用一个URI去匹配一个

[ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

[ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>      [ASP.NET MVC2 系列] ASP.Net MVC教程之<ASP.NET MVC 概述>     [ASP.NET MVC2 系列] 理解MVC应用程序的执行过程     [ASP.NET MVC2 系列] ASP.NET MVC Routing概述      [ASP.NET MVC2

全网最全ASP.NET MVC 教程汇总

全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MV

自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习

ASP.NET MVC学习之路由篇(1)

原文:ASP.NET MVC学习之路由篇(1) 一.前言 作为一个从ASP.NET转入到ASP.NET MVC的开发人员而言,可能在开发ASP.NET网站的时候就已经开始在使用路由了. 只不过在ASP.NET MVC中路由是关键部分,而在ASP.NET中需要自行加进去.下面我们将学习ASP.NET MVC中的路由 系统. 二.准备工作 1.新建一个ASP.NET MVC4项目 2.模板选择空 3.在Controllers中添加一个Home控制器 4.打开App_Start中的RouteConfi

ASP.NET MVC 教程汇总

自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习

自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MVC替代WebForms,产生ASP.NET

为ASP.NET MVC应用添加自定义路由

这里,我们将学习如何给asp.net mvc应用添加自定义路由.用自定义路由来修改默认路由表. 对一些简单的asp.net mvc应用,默认的路由表就已经足够了.但是,当你需要创建特殊的路由时,就需要创建自定义路由了. 假设正在进行一个blog项目的开发,希望处理用户的请求地址如下: /Archive/12-25-2009 当用户输入这个URL时,你想返回日期12-25-2009的blog入口,为了实现这个路由,需要添加自定义路由. 在这个asp.net mvc应用中,这个方法中含有一个自定义路

ASP.NET MVC 教程-MVC简介

ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. ASP.NET 支持三种不同的开发模式:Web Pages(Web 页面).MVC(Model View Controller 模型-视图-控制器).Web Forms(Web 窗体). 本教程介绍 MVC. MVC 编程模式 MVC 是三种 ASP.NET 编程模式中的一种. MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应