0
我已經寫了一段時間的博客作爲一個學習項目,並且我剛剛重寫了我的URL結構以改進我的控制器的組織。這個過程相當順利,但是我遇到了一個衝突路線的小問題。ASP.NET MVC 3:解決路由衝突
我想設置我的URL結構如下:
/
/page/2
/category
/category/page/2
類別被存儲在數據庫中。目前這個工作正常,但我只注意到,當我嘗試鏈接回主頁時,它改爲打/page
。
這裏是我當前的路由表:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Admin",
"admin",
new { controller = "Admin", action = "Index" }
);
routes.MapRoute(
"ShowPagedPostsByCategory",
"{category}/page/{page}",
new { controller = "Posts", action = "Index", page = UrlParameter.Optional },
new { page = @"(\d+)?" }
);
routes.MapRoute(
"ShowPagedPosts",
"page/{page}",
new { controller = "Posts", action = "Index", page = UrlParameter.Optional },
new { page = @"(\d+)?" }
);
routes.MapRoute(
"ShowPostsByCategory",
"{category}",
new { controller = "Posts", action = "Index" }
);
routes.MapRoute(
"ShowTaggedPosts",
"posts/tagged/{tag}",
new { controller = "Posts", action = "ShowTaggedPosts", tag = UrlParameter.Optional }
);
routes.MapRoute(
"EditDeleteComment",
"posts/{action}/{id}",
new { controller = "Posts" },
new { action = @"EditComment|DeleteComment", id = @"\d+" }
);
routes.MapRoute(
"AddComment",
"{controller}/comment",
new { controller = "Posts", action = "Comment" }
);
routes.MapRoute(
"ShowPost",
"{controller}/{PostID}/{*slug}",
new { controller = "Posts", action = "ShowPost", slug = UrlParameter.Optional },
new { PostID = @"\d+" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Posts", action = "Index", id = UrlParameter.Optional }
);
}
我能看到的問題是什麼:對家庭URL「/」與ShowPagedPosts路線匹配,但移動默認以下途徑似乎是錯誤的事情要做。這讓我覺得我對此的做法有些偏離。任何人都可以指出我正確的方向嗎?
編輯:其實,使用RouteDebugger,我可以看到它實際上與ShowPagedPosts 和 ShowPostsByCategory路線匹配。
感謝您的回覆。你的建議聽起來像我想要的,但我似乎無法得到它的工作。我在我的'/ admin'頁面上有一個鏈接,我想要進入主頁。我試過使用'@ Html.RouteLink(「Test」,「Default」)來匹配我的默認路由,但是雖然它呈現鏈接,但href是空白的,所以它只是再次回到'/ admin' 。我的參數與方法簽名相匹配,所以我不確定發生了什麼。 –
好的,這似乎是'Html.RouteLink'(也是'Url.RouteUrl')的一個小問題。從Scott Gu的帖子[這裏]找到並解決了這個問題(http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx)。感謝您的幫助,Arjan。 :) –