我目前正在嘗試生成此網址「/ Cloud/Hosting/RoaringPenguin/Manage/Exclusions」。Asp.Net MVC 5區域下的自定義動作路由
這裏是區域註冊
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Hosting_default",
"Cloud/Hosting/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
這裏在控制器
public class RoaringPenguinController : PortalControllerBase
{
public ActionResult Exclusions()
{
return View("Exclusions");
}
}
我已經嘗試增加了一個路由到所述動作本身像這樣
[Route("Manage/Exclusions")]
public ActionResult Exclusions()
我也已經嘗試爲控制器本身添加一些屬性
[RouteArea("Hosting")]
[RoutePrefix("RoaringPenguin")]
public class RoaringPenguinController : PortalControllerBase
但這似乎並不奏效。如果我關閉所有的屬性,那麼我得到的最終網址是「/ Cloud/Hosting/RoaringPenguin/Exclusions」。 有誰知道我怎麼能得到的「管理」的網址以及?
只是爲了確認我在我的RegisterRoutes方法下面一組的RouteConfig類
routes.MapMvcAttributeRoutes();
任何幫助表示讚賞之下。謝謝
嗨克里斯, 我嘗試了第一個建議(沒有基礎控制器),但我得到的是404錯誤 '/'應用程序中的服務器錯誤。 無法找到該資源。 描述:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。 請求的網址:/ Cloud/Hosting/RoaringPenguin/Manage/Exclusions 版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.6.1069.1' – tjackadams
還有其他事情正在發生。要麼區域沒有正確註冊,屬性路由選擇沒有正確啓用,或者其他路由與此衝突。根據你發佈的內容,這應該起作用。如果有什麼不對,就像你的區域實際上不是'Hosting',而是'CloudHosting',那麼你應該對代碼進行必要的更正。 –
你是對的。 基本上我的屬性路由在我的區域註冊後被調用。 這是解決方案 // //路由 routes.MapMvcAttributeRoutes(); //區域註冊 AreaRegistration.RegisterAllAreas(); ' 我改變了你的初始解決方案後,工作。非常感謝! – tjackadams