MVC - Routing - 网址路由

1. Routing  : 路由

  主要是比对通过浏览器传来的http要求与响应适当的网址给浏览器。

?





1

@Html.ActionLink("关于","About","Home")

  这段代码生成的HTML超连接:

?





1

<a href="/Home/About">关于</a>

  

2. 默认情况下 网址路由规则定义在 App_Start\RouteConfig.cs文档中。

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

namespace
MvcApplication3

{

    public
class 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 }

            );

        }

    }

}

 1.1 所有的ASP.NET Web 应用程序的路口点都是在 HttpApplication
的Application_Start()中。

  其中 RouteTable.Routes是一个公开的静态对象。用来保存所有的网址路由规则集合 (RouteCollection)。

在ASP.NET MVC 中
程序会从Global.asax中的 Application_Start() 事件加载一下方法。 

  RouteConfig.RegisterRoutes(RouteTable.Routes);
就是在加载网络路由地址

?





1

2

3

4

5

6

7

8

9

10

11

12

public
class MvcApplication : System.Web.HttpApplication

{

    protected
void Application_Start()

    {

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);

        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

        RouteConfig.RegisterRoutes(RouteTable.Routes);

        BundleConfig.RegisterBundles(BundleTable.Bundles);

    }

}

  

1.2 RegisterRoutes 中的IgnoreRoute 方法,是用来定义不要通过网址路由处理的网址,该方法的第一个参数就是设置“不要
通过网址路由处理的URL样式”。

?





1

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

  所谓的"不要通过网址路由处理的网址"
就是:如果今天客户端浏览器传送过来的网址在这一条规则比对成功,那么就不会再通过网址路由继续比对下去。

1.3 IgnoreRoute 方法中的第一个参数
“resource”。代表RouteValue路由变量,可以取任意值

 {resource}.axd代表所有的*.axd文档网址。所有的.axd文档通常都代表着其中一个HttpHandler
.就如.ashx文件一样。

1.4 IgnoreRoute
方法中的第一个参数中还有一个{*pathInfo}参数。也是一个 RouteValue路由变量。

  *pathInfo代表抓取全部的意思。

  完整的 地址 "{resource}.axd/{*pathInfo}"  举个例子:

  若网址为 /WebResource.axd/a/b/c/d 的话, {resource}.axd
就会比对WebResource.axd。

而{*pathInfo}就会得到啊 a/b/c/d, 如果去掉* 号就只能得到
a.

1.5  MapRoute。是用来定义网址路由扩充的。

   MapRoute方法的指定参数方式 已改为  ”具名参数“ 。

?





1

2

3

4

5

6

7

private
void Me(int
x, int
y = 6, int
z = 7)

       {

           //....

       }

  Me(1, 2, 3);// 标准调用

  Me(1, 5);//  等同与 Me(1,5,7) ,Z已经定义

  Me(1);//也可以

  name :参数第一Route 名称 ,在此为 “Default”.

  url : 具名参数定义。 {controller}/{action}/{id}

    定义URL样式包含三个路由参数分别为controller ,action,id

    如果输入网址 /Home/About/123,
就对应以上三个值

Default 具名参数 的默认值,当网址路由比对不到
http要求的网址时会尝试带入这里定义的默认值。

?





1

defaults: new
{ controller = "Home", action = "Index", id = UrlParameter.Optional }

  

    

MVC - Routing - 网址路由,布布扣,bubuko.com

时间: 2024-08-01 06:29:20

MVC - Routing - 网址路由的相关文章

[ASP.NET MVC] URL网址路由包含&ldquo;/&rdquo;斜线

ASP.NET MVC 网址包含"/"斜线 笔者碰到一个状况是,URL带入的参数是可能有"/"斜线的(使用者输入)像是以下 1.运行正常 http://localhost:45405/Home/Product?name=HTC/M8/手机套 2.运行正常 http://localhost:45405/Home/Product?name='抗涨'白人牙膏_特大号 到目前为止都还没问题,但我们为了让URL好看以及优化SEO,我们会做URL Rewriting像是以下 1

ASP.NET MVC 小牛之旅3:Routing——网址路由

网址路由(Routing)在ASP.NET MVC中有两个主要用途,一个用途是匹配通过浏览器传来的HTTP请求,另一个用途则是响应适当的网址给浏览器. 3.1匹配通过浏览器传来的HTTP请求 首先我们来看下第一个用途,也就是匹配通过浏览器传来的HTTP请求. 客户端对ASP.NET网站发出请求时,能够通过Routing找到合适的HttpHandler来处理网页,大致的处理流程为: 如果HttpHandler是由MvcHandler来处理的,那么,此时就会进入ASP.NET MVC的执行生命周期,

MVC笔记 网址路由与MVC的生命周期

一.网址路由 1.1  比对通过浏览器传来的HTTP请求 客户端对ASP.NET网站发出请求时,能通过R偶汤尼盖找到适当的HttpHandler来处理网页,大致的流程如图: 如果HttpHandler是由MvcHandler来处理,那么,此时就会进入MVC的执行生命周期,并且会找到适当的Controller与Action来对其进行处理,并将信息反馈给客户端. 1.2 将适当的网址返回浏览器 网址路由的另一个用途是决定MVC 应该输出什么样的网址并将其返回浏览器,跳转地址或在View中显示超链接时

MVC中的网址路由

什么是网址路由? 理论上的东西,小编也就不在多说了,只简单的介绍下,自己的认识. 所谓的网址路由,就是一个规则.通过这个规则来匹配.就好比我们经常用到的正则表达式一样. 默认的网址路由 打开项目中的RouteConfig.cs的话,会看到如下代码 <span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;font-size:18px;">p

ASP.NET Core——网址路由

网址路由在ASP.NET MVC中有两个主要目的,分别是比对通过浏览器传来的HTTP要求与响应适当的网址给浏览器,分别描述如下. 比对通过浏览器传来的HTTP要求 这个部分是为了能让客户端对ASP.NET网站进行要求时,能够通过网址路由查找适当的HttpHandler来处理网页,大致流程图如下: 如果HttpHandler是由MvcHandler来处理,那么这时候就会进入ASP.NET MVC的运行生命周期,并且会查找适当的Controller与Action进行处理,并适当地响应消息给客户端.

框架开发之——AngularJS+MVC+Routing开发步骤总结——5.14

1.延续MVC的观念:包括路由映射的编写,Controller的内容,具体View页面js的分离. 2.结合AngularJS做前端,后端使用Node.Js的写法,引入MVC框架,进行快速的开发. 步骤总结如下: 1.view页面修改,文件夹名称,文件名称,名称的大小写规范,在base文件夹中的main.ejs文件中记得注册. 注意使用angular.js进行前端页面的编写,以及相应页面代码的编写,相关angular.Js用法的收集. 2.view对应js文件的编写,文件夹的名称,文件名称,名称

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

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

LVS Direct Routing 直接路由

1. Direct Routing 直接路由 director分配请求到不同的real server, real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器一半的连接, 避免了新的瓶颈,同样增加了系统的可伸缩性.Direct Routing 由于采用物理层(修改MAC地址)技术,因此所有服务都必须在一个物理网段. (2). IP Tunneling(IP隧道) director(分发器)分配请求到不同的real server, real server

MVC 支持同名路由,不同命名空间

有时候我们会碰到两个项目合在一起,那么必然会碰到两个同名的controller,其实MVC在注册路由,添加Route的时候可以指定当前规则解析那个命名空间下的所有Controller. 注:Controller的调用是通过IControllerFactory,反射调用目标Controller,不指定目标命名空间,直接从BuildManager.GetReferencedAssemblies();如下. private static List<Type> controllerTypes = ne