有人可以向我介绍asp.net路由语法吗?

前端之家收集整理的这篇文章主要介绍了有人可以向我介绍asp.net路由语法吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Web窗体方案中处理此代码
public static void RegisterRoutes(RouteCollection routes)
  {

    Route r = new Route("{*url}",new MyRouteHandler());
    routes.Add(r);
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.gif/{*pathInfo}");

  }

首先,任何人都可以告诉我{* pathInfo}的定义在哪里?
http://msdn.microsoft.com/en-us/library/cc668201.aspx#url_patterns没有真正定义它。请问:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

比赛

/c/xyz.axd and 
/b/c/xyz.axd and
/a/b/c/xyz.axd

routes.IgnoreRoute("{resource}.axd");

只有比赛

/xyz.axd

其次,在:

{*url}

这是什么意思?而整个表达是什么意思呢?有没有明确的解释?

第三,是否有特定的顺序需要添加这些表达式来正确忽略路由?我知道{* url}是某种可能的,如果IgnoreRoutes来到它之前或之后,例如

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
Route r = new Route("{*url}",new MyRouteHandler());
routes.Add(r);

解决方法

我的2美分:
路由不是正则表达式。它只是组成路由的变量和静态组件,由段(由斜杠标识)分隔。有一个特殊符号,最后一个变量中的星号,这意味着从这里,忽略段分隔符 – 斜杠。所以,
{*url}

是最简单的路由,因为它意味着取整个URL,将其放入变量“url”,并将其传递到与该路由相关联的页面

{controller}/{action}/{id}

将所有内容都放在第一个分段(第一个斜杠)到变量“controller”中,将第一个和第二个之间的所有内容放在变量“action”中,第二个和第三个斜杠(或结束)之间的所有内容,进入变量’id’。然后将这些变量传递到关联页面

{resource}.axd/{*pathInfo}

这里把信息放在.axd /(它不能有任何斜线!)到’资源’,并把所有的第一个/进入’pathInfo’。由于这通常是一个ignoreRoute,所以不是将其传递给关联的页面,而是由Stop​​Handler处理,这意味着路由将不会处理它,而是由非路由HttpHandler处理。

如bleevo所说,路由被执行,以便它们被添加到集合中。所以在处理通用路由之前必须添加IgnoreRoute。

这是马的嘴:http://msdn.microsoft.com/en-us/library/cc668201.aspx

具体到你的例子,我会把IgnoreRoute行放在你的路线之上,因为你的路由实际上是一个全部的。另外,请记住.gif忽略只有在gif位于根目录下才能被保证。

猜你在找的asp.Net相关文章