我有一個公共網站,它接受一個頁面名稱,然後默認爲一個控制器和動作,頁面名稱作爲唯一標識符來呈現正確的視圖。例如。 http://www.mydomain.com/homepageASP.Net MVC路由問題 - 問號出現在我的鏈接
我也有一個管理員區域,所有CRUD的東西通過管理員的前綴進行訪問。例如。直到最近,我改變了一些http://www.mydomain.com/admin/controller/action
一切都被罰款,而現在,當我到http://www.mydomain.com/homepage鏈接我有這樣的:
<ul id="menu">
<li><%= Html.ActionLink("Home", "Details", "WebPage", new { pageName = "homepage" }, null)%></li>
<li><%= Html.ActionLink("About", "Details", "WebPage", new { pageName = "homepage" }, null)%></li>
</ul>
不再顯示爲http://www.mydomain.com/homepage而是http://www.mydomain.com/Admin/WebPage/Details?pageName=homepage
誰能幫?
這裏是我的Global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("AdminRoot",
"Admin",
new { controller = "Admin", action = "Index" }
);
routes.MapRoute(
"LogOn", // Route name
"LogOn", // URL with parameters
new { controller = "Account", action = "LogOn" },
new { action = "LogOn" }
);
routes.MapRoute("Account",
"Account/{action}",
new { controller = "Account", action = "" }
);
//routes.MapRoute(
// "Default", // Route name
// "{controller}/{action}/{id}", // URL with parameters
// new { controller = "Home", action = "Index", id = "" } // Parameter defaults
//);
routes.MapRoute(
"ErrorRoute", // Route name
"Error/Error404", // URL with parameters
new { controller = "Error", action = "Error404" }
);
routes.MapRoute("Admin",
"Admin/{controller}/{action}/{id}",
new { controller = "Admin", action = "Index", id = "" }
/*,new { action = "Create|Edit|Delete" }*/
);
routes.MapRoute("EventNewsData",
"Admin/{controller}/{action}/{year}/{month}",
new { controller = "Admin", action = "Index", year = 0, month = 0 }
/*,new { action = "Create|Edit|Delete" }*/
);
routes.MapRoute(
"Default", // Route name
"{pageName}/{moreInfoID}", // URL with parameters
new { controller = "WebPage", action = "Details", pageName = "homepage", moreInfoID = 0 },
new { action = "Details" }
);
routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "Error404" });
}
UPDATE:這已經固定,但不知道爲什麼
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("AdminRoot",
"Admin",
new { controller = "Admin", action = "Index" },
new { action = "Index" }
);
routes.MapRoute(
"LogOn", // Route name
"LogOn", // URL with parameters
new { controller = "Account", action = "LogOn" },
new { action = "LogOn" }
);
routes.MapRoute("Account",
"Account/{action}",
new { controller = "Account", action = "" }
);
//routes.MapRoute(
// "Default", // Route name
// "{controller}/{action}/{id}", // URL with parameters
// new { controller = "Home", action = "Index", id = "" } // Parameter defaults
//);
routes.MapRoute("Admin",
"Admin/{controller}/{action}/{id}",
new { controller = "Admin", action = "Index", id = "" }
, new { action = "Create|Edit|Delete|Index|DeleteFromIndex" }
);
routes.MapRoute("EventNewsData",
"Admin/{controller}/{action}/{year}/{month}",
new { controller = "Admin", action = "Index", year = 0, month = 0 }
, new { action = "GetCalendarData" }
);
routes.MapRoute(
"Default", // Route name
"{pageName}/{moreInfoID}", // URL with parameters
new { controller = "WebPage", action = "Details", pageName = "homepage", moreInfoID = 0 },
new { action = "Details" }
);
routes.MapRoute(
"ErrorRoute", // Route name
"Error/Error404", // URL with parameters
new { controller = "Error", action = "Error404" }
);
routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "Error404" });
}
嘗試使用菲爾Haacked出色的路線調試器(http://haacked.com/archive/2008/03/ 13/url-routing-debugger.aspx),我懷疑你在列表中比你期望的更早匹配。 – Lazarus 2009-07-23 11:55:53
謝謝,剛試過。如果我去http://www.mydomain.com/homepage,這是第一個匹配的路線,但鏈接仍然指向奇怪 – Jon 2009-07-23 12:12:16