如果控制器上存在操作,那麼在嘗試處理任何自定義映射路由之前,asp.net-mvc是否會路由到該操作?在嘗試映射路由之前是否將現有操作路由到路由?
示例。
說我有以下控制器
public class ShopController : Controller
{
public ActionResult Shop(Category category)
{
// returns some result
}
public ActionResult CartItemCount()
{
// returns some result
}
}
而且我已經註冊了以下的路徑,在我的路由集合:如果我有以下URL
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
@nemesv這個評論讓我真正看看我的其他路線並找到問題。我編輯了這個問題來反映我的發現。謝謝!如果您想爲此插入答案,我會將其標記爲正確。 – jeremysawesome