ASP.NET MVC 学习一之路由

 

本次学习的所有开发环境皆为VS2012+MVC4

一:什么是MVC:

     假设你是第一次学习MVC,好吧我们不去理解它内部是如何去实现功能的,我们只从它表面的字母意思先去入门理解吧

     M:models(模型)  V:view(视图)  C:controllers(控制器)

    先不要去纠结这三个字母是什么东西吧,以及这三个东西有什么用!我们所要用的就是先记下这个三个字母!呵呵,是不是有点死记硬背的赶脚,我也是这么觉得的,有点想扔砖的感觉!(麻痹,博主想讲的啥!!!-__-!)

二:MVC学习之路由

在此新建一个测试项目Home,并添加一个Controllers取名为HomeControllers,并为其添加一个Index视图;

项目文件如图:

双击打开Index.cshtml视图,更改其代码:

@{
    ViewBag.Title = "Index";
}

<h2>Hello World</h2>

运行项目我们已经发现程序能正确运行

 

也许到这你可能会惊讶于mvc是如何能工作并找到其工作文件的.

呵呵,聪明的你可能已经猜到了接下来就是路由登场了。

双击RouteConfig文件

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

这就是MVC内部定义的路由机制

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

对着句代码的意思先暂且理解为

对所有axd的资源 进行忽略,直接进行URL访问
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

这是一条简单的路由规则,name属性定义了路由的名称,url定义了路由的映射机制,defaults定义了路由的默认参数

实际{controller}就是对应着我们前面的controller的名称Home,action对应我们前面定义的Index,所以我们在浏览器中输入

www.Test.com/Home/Index就可以成功看到效果了!

 

好吧,到这里我们来定义一个属于自己的路由吧

routes.MapRoute(
                name: "myRoute",
                url: "{controller}-{action}"
                );

这里我没有给myRoute的路由定义默认的属性,当然我们运行项目,项目初始化后当然是找不到的,手动在浏览器中输入

www.Test.com/Home-Index就可以正确显示视图了,到这你是不是能体会到mvc的一个优势来呢,当然你可以定义更多个性化的url路由来方便SEO

routes.MapRoute(
                name: "myRoute",
                url: "{controller}-{action}"
                );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

这里需要补充一下,在这个项目中如果定义了两个路由规则,mvc会自动从上往下匹配路由规则,如果myRoute的路由规则没有匹配上就会匹配default的路由规则,如果两个都没匹配到,则会报错!

路由值的简单约束

刚才在name为“Default”的路由上id = UrlParameter.Optional,这句话的意思是id为可选输入,当我们去掉id = UrlParameter.Optional的时候,运行项目发现报错了,在url上给地址加上www.Test.com/Home/Index/1路由正确。

 

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                //加上路由值的条件约束
                constraints: new
                {
                    id = @"\d+"
                }
            );

此时我们给路由器的id属性添加一个约束条件规定id只能为数字,如果此时在浏览器输入

www.Test.com/Home/Index/1test的url则会报错

 

附上一个自己总结的几个路由规则吧

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                constraints: new { controller = @"\d{4}" }
               // constraints: new { controller [email protected]"\d{4}"}
                );
                  //hotels/所有匹配
            routes.MapRoute(
                name: "酒店首页",
                url: "Home/{*values}",
                defaults: new { controller = "Home", action = "Index", hotelid = "" }
            );
            routes.MapRoute(
                name: "网站首页",
                url: "{*values}",
                defaults: new { controller = "Home", action = "Index" }
                );
时间: 2024-10-17 11:33:50

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学习之控制器篇

一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MVC学习之路由篇幅(2) ASP.NET MVC学习之路由篇幅(3) 二.正文 1.IController的使用 这个接口可能很多人都没有使用过,但是我们常用的Controller类实现了这个接口,而且只要实现这个接口就可以作为一个控制器,当然很多的内部的处理就要我们自己去做了. 下面我利用ICont

(转)ASP.NET MVC 学习第一天

天道酬勤0322 博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅  | 管理 随笔:10 文章:0 评论:9 引用:0 ASP.NET MVC 学习第一天 今天开始第一天学习asp.net mvc,写的不是很好,高手不要喷,希望大家能一起进步学习. 好了,开始学习 新建项目,选择mvc 4应用程序 接下来选择基本,视图引擎当然要选择Razor,如果在选择aspx那我们就没必要用mvc喽 在这里我们简单说一下,项目模板如果选择空,这就需要我们自己进行导入很多文件,而选择基本vs会

ASP.NET MVC 3中的路由

准备发布新随笔,才发现草稿里还有几年前这篇烂了尾的,先放上来,有空再补完整吧-- (* 整理自<Pro ASP.NET MVC 3 Framework>学习笔记. *) 路由,正如其名,是决定消息经由何处被传递到何处的过程.也正如网络设备路由器Router一样,ASP.NET MVC框架处理请求URL的方式,同样依赖于一张预定义的路由表.以该路由表为转发依据,请求URL最终被传递给特定Controller的特定Action进行处理.而在相反的方向上,MVC框架的渲染器同样要利用这张路由表,生成

ASP.NET MVC学习之Ajax(完结)

一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发ajax十分的简单,而ASP.NET MVC学习到现在页面都是刷新的,所以这节就是ASP.NET MVC的最后一节,通过这节的学习我们将能够实现通过ajax提交表单,下面我们开始继续学习. 二.准备工作 1.首先确保引用了以下js库在_Layout中: 2.新建一个HomeController,然后在其

(asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用

在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类.另外在MvcContrib扩展项目中也有扩展一些帮助类,这样我们就不光 只能使用完整的html来编写了需要显示的页面了,就可以使用这些帮助类来完成,但最后运行时都还是要生成html代码的. 先来看看HtmlHelper能帮我们生成一些什么样的html呢.直接看效果吧. <div>          1.使用Ht

ASP.NET MVC 学习第一天

今天开始第一天学习asp.net mvc,写的不是很好,高手不要喷,希望大家能一起进步学习. 好了,开始学习 新建项目,选择mvc 4应用程序 接下来选择基本,视图引擎当然要选择Razor,如果在选择aspx那我们就没必要用mvc喽 在这里我们简单说一下,项目模板如果选择空,这就需要我们自己进行导入很多文件,而选择基本vs会自动导入需要的文件,对mvc不熟的人,还是先老实一点吧. 后面两个Internet.Intranet一个是网络web,一个是内网的.没有用过,也不是很了解.移动选项应该是开发

ASP.NET MVC 学习

ASP.NET MVC 学习 一. 学习MVC基础 MVC的三个字母分别代表什么意思? M—Model(模型).V—View(视图).C—Controller(控制器) VS2010 中建立MVC应用程序会自动生成哪些文件夹? Controllers – 放置Controller 类,处理URL 请求. Models – 放置业务实体类,表示和操作数据. Views – 放置UI 模板文件,负责展示输出结果. Scripts – 放置Javascript 类库文件和.js 文件. Content

ASP.NET MVC 学习第二天

今天使用mvc完成简单的增删改,内容比较简单,来熟悉一下mvc,数据库操作是用前面的ef,也算是温习一下ef吧. 新建mvc项目,在项目中的Models内添加ef,我这里只操作一下简单的user表.里面有id,name,sex,age字段.完成后如下 在Controller中添加user控制器,添加增删改查方法,下面是我在user控制器中添加的方法 1 using System; 2 using System.Collections.Generic; 3 using System.Data.En