首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解`routes.IgnoreRoute("{resource}.axd/{*pathInfo}")`

理解`routes.IgnoreRoute("{resource}.axd/{*pathInfo}")`
EN

Stack Overflow用户
提问于 2018-01-21 20:08:47
回答 2查看 1.3K关注 0票数 1

我正在学习asp.net MVC,并对这一部分感到困惑。

代码语言:javascript
复制
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

每一篇文章,包括pathInfo}"),都说了同样的话:“这段代码是要忽略对axd文件的请求。”

如果我将代码更改为

代码语言:javascript
复制
routes.IgnoreRoute("{x}.axd/{*y}");

还能用吗?

花括号里的东西有关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-21 20:31:06

是的,routes.IgnoreRoute("{x}.axd/{*y}")还能工作。

占位符- {placeholderName}

花括号中的值称为placeholders。这些都是简单的变量,可以任意命名。在评估传入URL时,名称根本不重要。但是,在生成URL或计算动作方法参数或模型属性值时,这些名称必须匹配。

IgnoreRoute的例子中,没有生成URL,所以这些名称基本上是语法操作。

捕获所有占位符- {*placeholderName}

星号*表示一个捕获-所有占位符。它基本上是说“匹配URL,即使从这里到URL末尾的其他段与传入的URL不匹配”。

前斜线- /

如本例所示,当使用所有捕获占位符时,它指示一个或多个可选段。因为这些段是可选的,所以最右边的/也是可选的。在使用Default路由时,这也是相同的行为:

代码语言:javascript
复制
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

当最右边的段是可选的,并且它不是在URL (Home/About)中提供的,这使得最右边的斜杠/也是可选的。如果下一个最右边的部分也是可选的和省略的,那么下一个最右边的/也是可选的。这解释了为什么默认路由与主页/匹配,而不需要//才能匹配。

这种行为是特殊的,只适用于/。如果有带有不同分隔符的占位符,例如{foo}-{bar}bar标记为UrlParameter.Optional,则仍然需要- (实际上,{bar}也是必需的)。/1-2匹配,/1-/1不匹配。

查询字符串- ?key=value&key2=value2

在匹配传入路由时,将完全忽略查询字符串参数。之所以将查询字符串值提供给MVC的ModelBinder并作为操作方法参数提供,是因为它们在请求的后面由value providers处理。

另一方面,在生成URL (如ActionLink)时,提供的任何非匹配路由值(无论是在请求中还是直接提供的)都会以查询字符串参数的形式添加到生成的URL的末尾。

代码语言:javascript
复制
@Html.ActionLink("Link", "Home", "About", new { key = "value", key2 = "value2" }, null)

假设Default路由,这个ActionLink将生成URL

代码语言:javascript
复制
/Home/About?key=value&key2=value2
票数 4
EN

Stack Overflow用户

发布于 2018-01-21 20:27:51

当路由映射到Controller (=class)中的Action (=方法)时,方括号中的'things‘很重要。在花括号之间指定的名称映射到操作的参数上,如下所示:

Account/{action}/{id}/{timestamp}

将下列功能参数化:

public IActionResult Home(int id, DateTime timestamp) { ...

星号*表示在此之后可以出现零或多个路径段(如在RegEx中)。例如,/a/b/c/d/e/...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48371215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档