ASP.NET WebForm 应用,用户请求的是物理文件,其中包括静态页面和动态页面,在Url中的显示都是服务器中一个物理文件的相对路径。但是ASP.NET MVC就不同了,用户请求的是Controller中一个Action方法,这种请求是通过路由将Url映射到相对的Controller和Action中。

ASP.NET MVC是在Application_Start时,定义了路由的规则,当用户使用规定的路由规则进行访问时,就会通过路由映射的方式实现用户完整的Url访问。下面我们就开始使用Asp.net WebForm进行简单的路由模拟。

一、我们新建一个ASP.NET Empty  Web Application

二、添加一个Global.asax文件,并在Application_Start事件中模拟ASP.NET MVC写路由代码。(注:Application_Start 事件是当整个应用程序部署到IIS等服务器,启动应用程序池时执行一次)

protected void Application_Start(object sender, EventArgs e)
{
var defaults = new RouteValueDictionary
{
{"controller","*"},
{"action","*"}
};//定义一个路由字典
RouteTable.Routes.MapPageRoute("defaults", "{controller}/{action}", "~/RouteMapping.aspx", true, defaults);//进行默认的路由映射,在整个模拟路由的过程中,所有的用户请求都将交给RouteMapping.aspx这WebForm页面进行处理。
}

三、用户请求"{controller}/{action}"格式的Url路径,如http://localhost:1673/Abc ,那么将显示Abc.aspx页面的内容。

仅仅在Application_Start中配置信息是达不到上图的效果的。上图配置的路由信息仅仅是映射了RouteMapping.aspx这一个页面,要想达到较好的效果,需要对RouteMapping.as页面获取到的"{controller}/{action}"信息进行稍微的处理。

protected void Page_Load(object sender, EventArgs e)
{
string controller = RouteData.Values["controller"] as String;//获取到路由表中的controller数据
//string action = RouteData.Values["action"] as String;
if (!String.IsNullOrEmpty(controller))
{
if (controller == "*")
{
Server.Transfer("Default.aspx");//Url地址如http://localhost:1673/则访问默认页
}
else
{
try
{
Server.Transfer(controller + ".aspx");//使用Server.Transfer进行服务器端重定向,进而显示了controller对应的页面方法。
}
catch
{ }
} }
}

一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模拟的更多相关文章

  1. ASP.NET MVC 5 入门-2控制器、路由

    一.创建项目: 上起始页,选择新项目. 在中新的项目对话框中,右侧语言类别选择C# ,然后项目类型选择Web,然后选择ASP.NET Web 应用程序 (.NET Framework) 项目模板. 将 ...

  2. ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点

    参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...

  3. ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

    在这篇文章中,我将继续ASP.NET Identity 之旅,这也是ASP.NET Identity 三部曲的最后一篇.在本文中,将为大家介绍ASP.NET Identity 的高级功能,它支持声明式 ...

  4. ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

    使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也 ...

  5. ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS

    ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS 背景 LESS确实不错,只是每次写完LESS都要手工编译一下有点麻烦(VS插件一直没有安装好),昨天 ...

  6. 七天学会ASP.NET MVC ——深入理解ASP.NET MVC

    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC   系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二) ...

  7. Announcing the Release of ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 for VS2012

    The NuGet packages for ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 are now live o ...

  8. ASP.NET MVC简单编程之(二)经典路由篇

    话题:请求从路由开始 在实际的ASP.NET MVC开发中,URL访问规则----路由的定义是非常重要的.因为任何一个请求都离不开路由.理解它,我们将能理解MVC处理请求的整个过程,灵活地定义系统各种 ...

  9. ASP.NET MVC学习(一)之路由篇Route

    什么是路由 通过[路由]配置,路由可以规定URL的特殊格式,使其达到特殊效果. 在ASP.NET MVC框架中,通过路由配置URL,使用户的URL请求可以映射到Controller下的action方法 ...

  10. ASP.NET MVC 5 伪静态之支持*.html路由

    参考了例子 到自己实践还是有不少坑要踩,这种文章,你说它好还是不好呢 注意这里的版本是ASP.NET MVC 5 首页的URL为  http://localhost:58321/index.html  ...

随机推荐

  1. 【openresty】获取post请求数据FormInputNginxModule模块

    关于openresty的一些介绍看这里. 首先,实验背景为openresty作为后台来处理前台post传递的数据. 在openresty内,有一个FormInputNginxModule模块,作用是解 ...

  2. Zabbix(二)--第一台主机监控及触发器

    0x01 Create Host 安装完zabbix后从哪里入手?无非就是要添加监控目标,那本文就从添加监控一个主机入手,了解zabbix的各个基本功能 添加主机在“Configuration”选项卡 ...

  3. 在github上搭建博客的问题

    最近想到要建立一个自己的博客,以便记录自己在学习中遇到的问题.发现github免费提供空间,正好可以利用它来搭建自己的博客.毕竟github pages免费空间,不限制流量,每次的博客改动和博客模板的 ...

  4. M2事后分析汇报总结

    学霸网站项目Postmortem结果 M2之于M1的改进 文档和问答的整合 完成webservice 完成数据库触发器设计与完整性约束依赖(大规模) 优化学霸UI 资源的搜索 外部问题的搜索 文档的上 ...

  5. ES6-set && 数组剔重

    set Set:ES6中提供的新的数据结构set.特点:1.类似数组,属性值时唯一的!!2.Set本身是一个构造函数,用来生成数据结构,表现形式{1,"3",78},是个数据集合 ...

  6. 性能优化九之UI卡顿分析

    在前一篇博客中提到内存抖动和耗时复杂的计算会导致UI卡顿. 那为什么内存抖动会导致UI卡顿呢? 其实在 性能优化一之内存与垃圾回收器 这篇文章中已经有所提及. 这里来详细说明一下: 渲染功能是应用程序 ...

  7. ajax select option 数据。为了下次方便信手拈来!!

    为了下次方便信手拈来!! 示例1 var form = document.forms["maddraddform"]; $(form.province).change(functi ...

  8. 1074. Reversing Linked List (25)

    模拟题,注意当k == 1 与 k == n时情况 #include <stdio.h> #include <string.h> #include <iostream&g ...

  9. myeclipse项目编码方式彻底设置

    我们团队6月10号开始做龙泉瓯江青瓷有限公司的ERP系统,采用java语言开发,在开发时我们采用的是java的流行框架struts2,前端脚本都用jquery框架,开发IDE用的是myeclipse, ...

  10. 如何辨别具体的一种SaaS是否安全?

    如何辨别具体的一种SaaS是否安全,需要把握以下几点: 1.传输协议加密 首先,要看SaaS产品提供使用的协议,是https://还是一般的http://,别小看这个s,这表明所有的数据在传输过程中都 ...