【发布时间】:2012-12-28 21:05:00
【问题描述】:
如果控制器上存在操作,asp.net-mvc 是否会在尝试处理任何自定义映射路由之前路由到该操作?
示例。
假设我有以下控制器
public class ShopController : Controller
{
public ActionResult Shop(Category category)
{
// returns some result
}
public ActionResult CartItemCount()
{
// returns some result
}
}
并且我已经在我的路线集合中注册了以下路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Shop",
"Shop/{category}",
new { controller = "Shop", action = "Shop", category = UrlParameter.Optional } // Parameter defaults
);
}
如果我有以下网址会怎样?
http://www.example.com/Shop/CartItemCount
编辑
我以为映射路线的名称与它的处理方式有关,这让我自己感到困惑。不是这样的,当涉及到 url 匹配路由的名字时就无所谓了。
事实证明,我在示例中给出的路径之上定义了另一条路径。这条路线虽然名称不同,但正在匹配。我什至没有想过要检查它,因为正如我所说,我认为路由的名称会以某种方式影响匹配。
【问题讨论】:
-
这取决于您注册了哪些其他路线。路由按注册顺序匹配。
-
@nemesv 此评论使我真正查看了我的其他路线并找到了问题。我已经编辑了这个问题以反映我的发现。谢谢!如果您想为此插入答案,我会将其标记为正确。
标签: c# asp.net asp.net-mvc routes asp.net-mvc-routing