您的位置:首页 > 编程语言 > ASP

Asp.net MVC学习笔记2 -----URL Route

2010-09-17 16:48 495 查看
在本教程,您将学习到如何将一个的自定义的route添加到asp.net mvc 中,您将会知道怎么将Global.asax文件中的默认的route 咏一个自定义的Route替换,

在一写简单的asp.net mvc应用程序中, 默认的路由表(detault route table)将会工作的很好,但是,你可能会发现你有的时候有一些特殊的要求,在那种情况下,你可以自定义一个route。

想象一下,比如,你正在写一个博客应用程序,我们可能有的时候需要向这样的一个地址:

/Archive/12-25-2009

当一个用户请求时,你想返回一个像12/25/2009这样的对应日期。为了能生成这样发的请求,你需要新建一个自定义的route.

在下面的Gloabel.asac文件中包含了一个新的自定义Route,命名为"Blog"

using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1
{

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Blog",                                           // Route name
"Archive/{entryDate}",                            // URL with parameters
new { controller = "Archive", action = "Entry" }  // Parameter defaults
);

routes.MapRoute(
"Default",                                              // Route name
"{controller}/{action}/{id}",                           // URL with parameters
new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

}

protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}


注意:加入到 route table 中的route的顺序是很重要的,我们新添加的自定义的Blog路由需要添加到Defualte路由前面,如果弄成相反的。那么这个默认的route将永远会被调用而不会去调用我们自定义的route.

自定义的Blog route匹配任何以/Archive/.So,所以它将匹配下面所有的网址。

/Archive/12-25-2009

/Archive/10-6-2004

/Archive/apple

自定义的route 将会匹配一个叫做的Archive的控制器,同时调用Entry() action,当Entry)_方法被调用的时候,

using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
public class ArchiveController : Controller
{

public string Entry(DateTime entryDate)
{
return "You requested the entry from " + entryDate.ToString();
}

}
}


注意:Entry()方法带的参数是一个时间格式的,如果用户输入的参数不能转化为datetime类型,这将会在转换的时候出现一个错误

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: