ASP.NET MVC 路由(3)

原创|其它|编辑:郝浩|2010-02-09 13:31:30.000|阅读 535 次

概述:创建一个路由约束去限定那些走特殊路由的浏览请求。使用符合规则的语法去限定路由约束。例如,假设在列表一Global.asax文件中已经定义了一个路由。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

创建一个路由约束(C#

    创建一个路由约束去限定那些走特殊路由的浏览请求。使用符合规则的语法去限定路由约束。例如,假设在列表一Global.asax文件中已经定义了一个路由。

列表1---Global.asax.cs

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

 

    列表一中有一个Product路由,可以用这个路由把浏览请求映射到表二的ProductController

列表2---ProductController.cs

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

 

注意这个Details()方法接收一个productId的整型参数。

列表一中定义路由可以映射以下任何请求:

/Product/23

/Product/7

不幸的是,它也映射如何请求:

/Product/blah

/Product/apple

因为Details()方法的参数是整型,映射一个请求包含了其它非整型类型会产生错误。例如,如果输入如下请求/Product/apple,就会得到如图1的错误页面。

1

 

 

 

 

 

 

 

 

 

 

    我们真正想做的是去映射一个适合的包含一个整型参数productIdURL请求。当创建一个需要映射限定的URL时,可以使用约束。在列表3中,修改了Product路由,包含一个规则限定映射参数是整型。

列表3---Global.asax.cs

 

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

这个规则\d+映射一个或多个整形参数。它限定Product路由映射如下URL请求:

/Product/23

/Product/7

而不映射这些请求:

/Product/blah

/Product/apple

这些请求将被其它的路由映射,如果没有适合的路由,资源没有被找到错误将被返回。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP