加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:44:15 所属栏目: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}.g
我在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位于根目录下才能被保证。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读