1
我看到很多MVC路由的問題,並且遇到了類似的問題,導致路由匹配URL。MVC 4:自定義路由
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//default route
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("Beer", "Beer/{beerid}", new { controller = "Beer", action = "Id", beerid = 0});
routes.MapRoute("Beer", "Beer/{beername}", new { controller = "Beer", action = "Name" });
BeerController方法
public ActionResult Id(int beerid)
public ActionResult Name(string beername)
如果我改變方法如下,
public ActionResult Id(int? id)
public ActionResult Name(string id)
默認路由的工作原理與以下網址:
http://localhost/Beer/Id/100
http://localhost/Beer/Name/Coors
但什麼我要去的只是
http://localhost/Beer/100
http://localhost/Beer/Coors
任何想法?
我只是去嘗試 - 它仍然沒有路由..得到一個資源不能被發現:請求的URL:/啤酒/ 110 Id的操作方法是沒有被擊中.. 我試圖創建一個名爲BeerById的新操作方法,並使用它來避免與Id方法混淆..它只是沒有選擇路由規則.. Global.asax.cs斷點不會打到 – Jay
@Jay你應該要求* /啤酒/ 110 *不是**啤酒**。您的路線設置完全匹配「啤酒」。 – asymptoticFault
對不起..這是http:// localhost:22449 /啤酒/ 100「啤酒」是一個錯字 – Jay