我有一個網站在MVC4,我正在開發,需要一些自定義路由。這是一個簡單的網頁,只有幾頁。例如:MVC4自定義路由 - 驗證個性化網址
/index
/plan
/investing
... etc.. a few others
通過管理員面板站點管理員可以創建「品牌」的網站,基本上反映了上述內容,但換出像品牌公司名稱的幾件事情,標誌等。一旦創建,網址看起來像
/{personalizedurl}/index
/{personalizedurl}/plan
/{personalizedurl}/investing
...等...(完全相同的頁面作爲非品牌網頁。
我與控制器方法的行爲過濾器屬性驗證個性化的網址,並返回404如果沒有在數據庫中找到。
這裏是我的行動的一個示例:
[ValidatePersonalizedUrl]
[ActionName("plan")]
public ActionResult Plan(string url)
{
return View("Plan", GetSite(url));
}
易peasy到目前爲止和工作得很好,有以下途徑:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Admin",
url: "Admin/{action}/{id}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{action}",
defaults: new { controller = "Default", action = "Index" }
);
routes.MapRoute(
"Branded", // Route name
"{url}/{action}", // URL with parameters
new { controller = "Default", action = "Index" } // Parameter defaults
);
/*
routes.MapRoute(
"BrandedHome", // Route name
"{url}/", // URL with parameters
new { controller = "Default", action = "Index" } // Parameter defaults
);
*/
}
我現在的問題是與底部註釋掉了路線。我希望能夠到/ {individualurl} /並找到正確的操作(默認控制器中的索引操作)。現在底線被註釋掉了,我得到了一個404,因爲它認爲它是一個行爲,並沒有找到它。當我對它進行取消註釋時,索引頁面可以正常工作,但是單個操作不會/因爲它認爲它是pUrl而無法在數據庫中找到它。
無論如何,對於長期的問題抱歉。任何幫助或建議如何設置這將不勝感激。
詹姆斯