[英]Generating URLs for ASP.NET MVC Area routing with subfolder
我有一個 ASP.NET MVC 應用程序,它具有以下特殊路線的區域:
區域登記文件:
context.Routes.MapHttpRoute(
"AccessControlApi_default",
"accesscontrol/api/{controller}/{id}",
new { id = RouteParameter.Optional }
);
context.MapRoute(
"AccessControl_dashboardwidgets",
"accesscontrol/dashboardwidgets/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "AccessControl.Controllers.DashboardWidgets" }
);
context.MapRoute(
"AccessControl_default",
"accesscontrol/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "AccessControl.Controllers" }
);
第一個路由是api,第二個是area下子文件夾中的controllers和views,第三個是area下的默認controllers。
一切都在路由方面運行良好,但問題在於像這樣使用Url.Action
:
<a href='@Url.Action("Index","Home",new{area="AccessControl"})'>Go to home</a>
它總是在區域和控制器之間的 url 中注入dashboardwidgets關鍵字,如下所示: {host}/accesscontrol/ dashboardwidgets /Home/Index
如何根據我的需要生成url,要么是區域的根目錄,要么是區域下的這個子文件夾??
我認為解決方案是在構建鏈接時使用命名路由。 您需要將呼叫從
@Url.Action("Index","Home",new{area="AccessControl"})
到
@Url.RouteUrl("AccessControl_dashboardwidgets", new {area = "AccessControl", controller="Home", action="Index"})
或者
@Url.RouteUrl("AccessControl_default", new {area = "AccessControl", controller="Home", action="Index"})
取決於您的目標路線。
很抱歉參數混亂,正在做其他事情的同時進行編輯...顯然要避免周一早上的多任務處理:)
為了使用@Url.Action 擴展方法,您需要為 routeValues 參數指定 httproute 名稱,如下所示:
@Url.Action("Index","Home", new { httproute ="AccessControlApi_default"} )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.