• Asp.net Mvc Framework 二 (URL Routing初解)


    什么是URLRouting呢?
    你可以使用URL routing来配置一些URL的映射,使用户可以按你的规则来访问网站.
    使用URL routing,一定要规定URL模式,它包括一个位置标识,它将在你请求网页时按这个规则返回给你内容. 当然,这个创建的规则完全是由你自己定义的.

    上回说道:
    http://localhost/Views/Home/Index.aspx和
    http://localhost/Views/Home/About.aspx并无法访问
    Views/Home/Index.aspx

    Views/Home/About.aspx
    这是怎么回事呢,那我们要怎样才能访问呢
    答案是:
    http://localhost/Home和
    http://localhost/Home/About
    于是可能你会问了:为什么呢?(MS很春很晚)
    原因是因为页面URL的请求规则在Global.asax.cs中定义的规则所决定

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    namespace MvcApplication2
    {
        
    /// <summary>
        
    /// 还是老规矩,按序号看
        
    /// </summary>

        public class GlobalApplication : System.Web.HttpApplication
        
    {
            
    public static void RegisterRoutes(RouteCollection routes) {
                
    // 4.注意: 将URL 规则更改为 "{controller}.mvc/{action}/{id}" 即可
                
    // 自行支持 IIS6 and IIS7 两种模式
                
    // 笔者注:一般的虚拟主机不支持.mvc,.aspx也要检查文件存在
                
    // 所以你可以将.mvc换成.ashx或.asbx

                
    //1.因为MVC与传统Aspx的最大不同就是访问是访问的Controller/Action
                
    //而不是aspx文件,要展现给用户哪一个aspx文件是由Controller决定的
                
    //这个是文件默认自带的URLRouting规则,是将Controller/Action/id的访问
                
    //模式指向那个Controller
                routes.Add(new Route("{controller}/{action}/{id}"new MvcRouteHandler())
                
    {
                    Defaults 
    = new RouteValueDictionary(new { action = "Index", id = "" }),
                }
    );
                
    //2.这个URL Routing是为了解决直接访问域名时,会出现找不到文件的情况
                
    //所以要采用这个方法将主页Routing到Home/Index上,Add方法现在多用MapRoute方法替代
                routes.Add(new Route("Default.aspx"new MvcRouteHandler())
                
    {
                    Defaults 
    = new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),
                }
    );
            }


            
    protected void Application_Start(object sender, EventArgs e) {
                
    //3.这个没什么好讲了,就是在应用程序启动时初始化它
                RegisterRoutes(RouteTable.Routes);
            }

        }

    }

    注意这一点
    URL只与Controller有关

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

    以示例中的Global.asax.cs中定义的{controller}/{action}/{id}规则为列
    /Home/About/12其实就是访问
    Controller="Home" Action="About" 它的参数为 id="12"

    那么我们要怎么利用Controller写自己想要的页面呢
    还是老话,下回分解

    相关:

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

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

    System.Web.Routing 的说明文档

  • 相关阅读:
    js面向对象实现Tab切换
    js中的面向对象基础1
    js正则表达式
    Ajax的基础使用
    JS完美运动框架
    JS实现链式运动
    js实现多物体运动框架
    js实现多物体运动
    JS运动应用
    JavaScript中的高阶函数
  • 原文地址:https://www.cnblogs.com/chsword/p/aspnetmvc_2.html
Copyright © 2020-2023  润新知