MVC路由会查找模式或名称吗

MyDaft问题

我试图了解路线,但是非常困惑。

问题很简单,默认值会对选择哪个路由器有任何影响,还是仅仅是模式。

例如,考虑以下

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{startIndex}",
defaults: new { controller = "Home", action = "Index", startIndex = UrlParameter.Optional }
);

routes.MapRoute(
name: "About",
url: "{controller}/{action}/{startIndex}",
defaults: new { controller = "About", action = "Index", startIndex = UrlParameter.Optional }
);

不管最终结果是否相同,由于URL:模式匹配请求,因此MVC每​​次都会简单地选择第一个,从而忽略它们具有不同的控制器吗?

特凡福森

路线选择使用模式匹配,并将选择第一个匹配模式。在您的示例中,没有理由选择第二条路线,因为第一条路线将与第二条路线匹配/about/...,并导致调用相同的动作。如果需要的路由具有相同的基本模式,则该模式中的值可能会影响所使用的控制器,则可以使用路由约束来帮助选择正确的路由,也可以使用固定值并将该路由放置在默认路由之前。

 routes.MapRoute(
     name: "Contact",
     url: "/contact",
     defaults: new { controller = "about", action = "contactus", id = "" }
 );

 routes.MapRoute(
     name: "Help",
     url: "/help",
     defaults: new { controller = "about", action = "help", id = "" }
 );

routes.MapRoute(
    name: "Admin",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Admin", action = "Index", id= UrlParameter.Optional },
    constraints: new { controller = "(admin)|(orgadmin)" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{startIndex}",
    defaults: new { controller = "Home", action = "Index", startIndex = UrlParameter.Optional }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模式匹配会丢失类型界限吗?

来自分类Dev

在恢复模式下会丢失数据吗?

来自分类Dev

存储库模式会杀死ORM吗?

来自分类Dev

委托模式会破坏封装吗?

来自分类Dev

模式匹配会丢失类型界限吗?

来自分类Dev

设计模式会破坏抽象吗?

来自分类Dev

路由名称在MVC 4中的意义

来自分类Dev

Asp.net MVC路由名称,带“-”

来自分类Dev

Laravel - 路由模式不能多次引用变量名称

来自分类Dev

我可以在名称字段中计算“查找名称”属性吗?

来自分类Dev

C ++:此模式有名称吗,可以改进吗?

来自分类Dev

路由器之间的信号强度会降低吗?

来自分类Dev

无线路由器会感染病毒吗?

来自分类Dev

关于了解MVC模式的问题吗?

来自分类Dev

这个MVC结构符合模式吗?

来自分类Dev

MVC会忽略并处理Web API路由

来自分类Dev

Java MVC模式可以与委托模式组合吗?

来自分类Dev

MVC模式否定其他设计模式吗?

来自分类Dev

查找带有模式的文件夹名称

来自分类Dev

查找名称与模式匹配的目录并将其移动

来自分类Dev

查找和合并与复杂名称模式匹配的文件的命令

来自分类Dev

如何使用`find`查找名称适合特定模式的文件?

来自分类Dev

AngularDart:路由名称的命名空间也是分层的吗?

来自分类Dev

可以用 DynDNS 名称 ping 路由器吗?

来自分类Dev

如何在Symfony控制器中从路由名称检索路由模式

来自分类Dev

Json.NET模式会忽略$ schema吗?

来自分类Dev

Azure网站在标准模式下会变冷吗?

来自分类Dev

HDD上的数据模式会导致损坏吗?

来自分类Dev

使用DP交替模式时,USB设备会变慢吗?