在一个ASP.NET MVC应用来说,针对HTTP请求的处理和相应定义Controller类型的某个Action方法中,每个HTTP请求的目标对象不再像ASP .NET Web Form应用一样是一个物理文件,而是某个Controller的某个Action。目标Controller和Action的名称包含在HTTP请求中,而ASP.NET MVC的首要任务就是通过当前HTTP请求的解析得到正确的Controller和Action的名称。这个过程是通过ASP.NET MVC的URL路由机制来实现的。
ASP.NET定义了一个全局的路由表,路由表中的每个路由对象对应着一个将Controller和Action名称作为站位符的URL模板。对于每一个抵达的HTTP请求,ASP.NET MVC会遍历路由表找到一个URL模板的模式与请求地址相匹配的路有对象,并最终解析出以Controller和Action名称为核心的路由数据。在我们自定义的ASP.NET MVC框架中,路由数据通过具有如下定义的RouteData类型表示。
class RouteData
2: {
private set; }
private set; }
public IRouteHandler RouteHandler { get; set; }
public RouteBase Route { get; set; }
7:
public RouteData()
9: {
object>();
object>();
string>());
13: }
string Controller
15: {
16: get
17: {
string.Empty;
out controllerName);
return controllerName.ToString();
21: }
22: }
string ActionName
24: {
25: get
26: {
string.Empty;
out actionName);
return actionName.ToString();
30: }
31: }
string> Namespaces
33: {
34: get
35: {
];
37: }
38: }
39: }