zoukankan      html  css  js  c++  java
  • ASP.NET MVC 重点教程一周年版 第二回 UrlRouting 【转】

    一、什么是UrlRouting


    你可以使用UrlRouting来配置一些URL的映射,使用户可以按你的规则来访问网站.
    使用UrlRouting,一定要规定URL模式,它包括一个位置标识,它将在你请求网页时按这个规则返回给你内容. 当然,这个创建的规则完全是由你自己定义的.
    上回说道如何访问index.aspx及about.aspx:

    但是http://localhost/Views/Home/Index.aspxhttp://localhost/Views/Home/About.aspx这两个地址并无法直接访问以下两个文件:
    Views/Home/Index.aspx 与 Views/Home/About.aspx

    这是怎么回事呢,那我们要怎样才能访问呢 ?
    答案是:
    http://localhost/Home和http://localhost/Home/About
    这是为什么呢?

    这就是UrlRouting的功能,而这个功能的配置是由,URL的请求规则定义的,这个规则定义在Global.asax.cs中定义。

    二、基本UrlRouting规则的定义

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace MvcApplication2
    {
        /// <summary>
        /// 还是老规矩,按序号看
        /// </summary>
        // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
        // visit http://go.microsoft.com/?LinkId=9394801
        public class MvcApplication : System.Web.HttpApplication
        {
            // 4.注意: 将1标的规则更改为 "{controller}.mvc/{action}/{id}" 即可
            // 自行支持 IIS6 and IIS7 两种模式
            // 笔者注:一般的虚拟主机不支持.mvc,.aspx也要检查文件存在
            // 变通方法为可以将.mvc换成.ashx或.asbx
    
            public static void RegisterRoutes(RouteCollection routes)
            {
                //5、此路径不受后面规则控制
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                //1、大家可以回忆一下Controller和Action的定义
                //因为MVC与传统Aspx的最大不同就是访问是
                //访问的Controller.Action即某类下的一个函数而不是aspx文件,
                //要展现给用户哪一个aspx文件是由Controller决定的(即默认的同名规则)
                //这个是文件默认自带的UrlRouting规则,是将Controller/Action/id的访问
                //模式指向对应的Controller及Action
                routes.MapRoute(
                    "Default",                                              // Route 名称
                    "{controller}/{action}/{id}",                           // URL参数
                    new { controller = "Home", action = "Index", id = "" } 
                    // 2、参数的默认值也就是如果各部分为空的话访问
                    //HomeController下的Index这个Action
                );
            }
            protected void Application_Start()
            { //3.这个没什么好讲了,就是在应用程序启动时初始化它
                RegisterRoutes(RouteTable.Routes);
            }
        }
    }

    注意这一点ASP.NET MVC 中URLRouting只与Controller/Action有关

    三、UrlRouting解决的问题

    UrlRouting是为了让Url更简短更有意义才出现的,例如:

    post.aspx?year=1999&month=3&day=8 的参数URL变为
    /post/1999/3/8/ 这样的简短漂亮且有意义的URL

    而类似home/about.aspx?id=12,以示例中的Global.asax.cs中定义的{controller}/{action}/{id}规则为列
    /Home/About/12其实就是访问
    Controller="Home" Action="About" 它的一个QueryString参数为 id="12"

    四、UrlRouting相关资料

    System.Web.Routing入门及进阶 上篇

    System.Web.Routing入门及进阶 下篇

    System.Web.Routing 的说明文档

    那么我们要怎么利用ASP.NET MVC编写自己想要的页面呢?

  • 相关阅读:
    背包问题
    標準差、方差、正太分佈公式
    C#實現XML的增刪查改
    XML的基礎結構
    微信小程序入門學習資料鏈接
    微信小程序wxml無法實現頁面跳轉的問題
    088_jsp转成成servle所在的路径?
    075_jsp如何debug?
    028_Mybatis返回int类型为空时报错 attempted to return null from a method with a primitive return type (int)
    087_数据库类型
  • 原文地址:https://www.cnblogs.com/cxd4321/p/1565380.html
Copyright © 2011-2022 走看看