没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2010-02-04 13:33:46.000|阅读 641 次
概述:在这份指导说明中,你将会知道每个基于ASP.NET MVC应用程序的一个相当重要的特点,那就是ASP.NET Routing(路由)。ASP.NET Routing主要负责把浏览请求映射到指定的控制部分的具体方法。看完本说明之后,你将会明白标准的路由表是如何把请求映射到控制部分的具体方法的。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
ASP.NET MVC Routing 概述(C#)
在这份指导说明中,你将会知道每个基于ASP.NET MVC应用程序的一个相当重要的特点,那就是ASP.NET Routing(路由)。ASP.NET Routing主要负责把浏览请求映射到指定的控制部分的具体方法。看完本说明之后,你将会明白标准的路由表是如何把请求映射到控制部分的具体方法的。
使用默认路由表
当你创建了一个新的ASP.NET MVC应用程序的时候,该程序已经被配置以便使用ASP.NET 路由。ASP.NET路由被组织在两个地方:
第一个地方:ASP.NET路由功能是在你应用程序的WEB配置文件(Web.config)中启用的。在这个配置文件中有四个路由相关部分:
小心不要误删掉这些部分,因为没有这些路由将不能再工作。
第二个地方:更为重要一点,在应用程序的Global.asax文件中创建了一个路由表,Global.asax文件比较特殊,它包含了应用程序生命周期内的一些请求的处理部分。它是在程序开始期间被创建的。
在列表一文件中包含一个ASP.NET MVC应用程序默认的Global.asax文件。
列表1 ---Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
当MVC应用程序第一次被访问,Application_Start()方法就被自动调用,而这个方法用调用了RegisterRoutes()方法,这个方法创建路由表。
默认的路由表包含了一个路由(Default)。默认路由映射URL的第一部分到一个控制名,第二部到控制方法,第三部分到参数。
假设你在浏览器地址栏中输入以下地址:
/Home/Index/3
默认的路由映射这个URL成如下参量:
Controller = Home
Action = Index
Id = 3
(形象理解:这件事情是哪个政府部分管理的?这个部门具体负责这件事的人是谁?要送什么才能处理我的事情?)
当你请求这个URL时,以下代码将被执行:
HomeController.Index(3)
默认的路由包含3个参数.如果你不提供控制,那么控制参数默认为Home。如果你不提供方法,那么方法默认为Index。最后,如果你不提供id,则默认是一个空串。
(加粗加斜)部分指的是在浏览器中输入的URL省略,并不是在Global.asax.cx中。
我们来看一些例子,研究一下默认路由是如何映射URL到控制方法的。假设你在游览器地址栏输入如下URL:
/Home
因为默认的路由参量是默认的,键入这个URL将导致列表2中HomeConroller类的Index()方法被调用。
列表2---HomeController.cs
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index(string id)
{
return View();
}
}
}
在列表2中,HomeController类包含一个Index()方法,它有一个id参数。URL /Home请求会导致Index()方法被调用,传入的Id参数是一个空串。
因为MVC framework映射控制方法的这种方式,/Home的请求也会导致列表3中的HomeController类的Index()方法被执行。
Listing 3---HomeController.cs(Index方法没有参数)
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
在列表3中的Index()方法不接受任何参数。/Home请求导致Index()方法被调用。/Home/Index/3也调用这个方法(Id被忽略)。
/Home请求也会导致列表4 中的HomeController类被调用。
Listing 4 ---HomeController.cs(Index 方法参数可空)
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
return View();
}
}
}
在列表4中的Index()方法有一个整型参数。因为它参数可空,故它能够无误的调用。但是如果此时请求/Home/Index/3,参数3被接受,不会被忽略。
最后,用/Home请求列表5中的方法会导致一个异常,因为它的Id参数不可空。如果你企图去用这会的请求,你会得到报错的显示,如图1。
Listing5 ---HomeController.cs(Index方法有一个Id参数)
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index(int id)
{
return View();
}
}
}
图1:
/Home/Index/3请求,换句话说,它就可以正确的调用列表5中的方法。Id参数值为3。
总结
这篇指导说明的综旨是提供你一个简短的入门ASP.NET路由。我们研究了新建的 ASP.NET MVC项目的默认路由表。你知道了默认的路由如何把URL映射到控制方法了。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号