Asp.net MVC2学习笔记1-Route

Title最近就开始学习 Asp.net MVC 框架了,记录一下学习的过程

 

 

MVC2 框架安装完成以后我们就可以开始我们的 MVC之旅了,呵呵

 

本次学习内容:Route

  

首先 route 的中文意思就是我们常说的“路由”,确实这里也是这个意思,在我们MVC中已经不再使用 XX.aspx 来访问页面了,

所有页面的请求会通过route来解析找到对应的控制器(controller)里面对应的操作(action)来执行的。

  

mvcapplication项目新建完成后,会默认生成一个 route,在 Global.asax.cs 文件中,我们可以看到

 

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

 

routes.MapRoute 方法就是提供给我们映射一个路由的,我们可以看到默认路由的参数和自带的参数解释

1、Default:路由名称

 

2、{controller}/{action}/{id}:这是 url 解析格式 ,大括号括起来的是需要解析的参数 {controller}是找到对应的 控制器,{action}是控制器里面的对应的方法,

{id}是默认提供的一个参数名,类似我们以往的 http://xXX.com/abc.aspx?id=XXX 这url里面的id参数

 

这段就是根据URL格式找到控制器和执行哪个action的重点:

http://localhost:12345/Home/Index/2,这里则根据上面的规则解析,找到Home这个controller,并执行home里面的Index 方法,并且方法参数 id的值是2

 

3、new { controller = "Home", action = "Index", id = "" }:是默认的参数,当没有指定{controller}时 默认 "Home"这个控制器,当没有指定 {action}时 默认"Index" 这个执行方法,类似的  id 就是 如果没有指定{id} 则 使用这里的值

 

 

上面就是对默认的一个映射参数的解释也就是默认的一个解析URL格式的配置,呵呵,微软这个功能实在太妙了,这样就把业务逻辑和页面分开了,我们可以通过修改这里的配置,来解析URL执行我们想要执行的业务代码、展示页面。

 

下面我们可以自己定义一个规则来解析我们所需要的url格式 如:

 

代码
routes.MapRoute(
                
"myRoute",                                              // Route name
                "myRoute/{dt}",                           // URL with parameters
                new { controller = "MyController", action = "MyAction" }  // Parameter defaults
            );

 

 

这里我为新添加的一个 route 起了个名字 叫 "myRoute",

我规定的 url 格式 是 "myRoute/{dt}",刚才上面提到 被大括号括起来的值是参数,而不括起来的则可以看成字符串,后面 dt 是一个参数,这里我没有 在这个规则上写上

{controller} 和 {action}2个参数,这是系统就会找到下面默认提供的参数

"new { controller = "MyController", action = "MyAction" } "  默认控制器 是 "MyController"(注意:控制器的名称叫MyController,实际上类名叫MyControllerController,这点需要注意,否则报404错误。),默认方法是 "MyAction",好,这样我们就添加上了我们自定义规则的路由;

 

下面就是需要添加 MyController 控制器 和 MyAction 方法;

代码如下

 

 

代码
public class MyControllerController : Controller
    {
        
//
        
// GET: /My/

        
public ActionResult Index()
        {
            
return View();
        }

        
public ActionResult MyAction(DateTime dt)
        {
            ContentResult cr 
= new ContentResult();
            cr.Content 
= "MyController's MyAction is Workded!" + dt.ToString("yyyy年MM月dd日");
            
return cr;
        }
    }

 

 

这里可以看到  MyAction 方法里面接收一个 DateTime 类型的 dt,就是我们规则里面的 {dt}这个参数,

启动我们程序后,在地址栏里输入 http://localhost:2235/myRoute/2010-1-10

就可以看到页面输出:

 

MyController's MyAction is Workded!2010年01月10日

 

 

大家是不是感觉route 很爽了,感觉用起来随心所欲嘛,嘿嘿~

 

posted @ 2010-01-10 22:16  -Enchant  阅读(5482)  评论(10编辑  收藏  举报