2
我有我需要知道區域,控制器和動作的全局屬性。由於路由(內部區域註冊和屬性路由),我無法使用RawUrl。我遵循了以下兩種方法,但在這兩種情況下,我的區域都回歸爲空。當我使用路線,然後我得到區域名稱就好了。爲什麼當我做redirecttoaction或url.action或手動輸入url等時,我的區域爲空?我們正在使用MVC 5.0。獲取過濾器屬性中的區域,控制器和動作名稱
1:
var routingValues = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)).Values;
var currentArea = (string) routingValues["area"] ?? string.Empty;
var currentController = (string) routingValues["controller"] ?? string.Empty;
var currentAction = (string) routingValues["action"] ?? string.Empty;
2:
var handler = HttpContext.Current.Handler as System.Web.Mvc.MvcHandler;
var area = handler.RequestContext.RouteData.Values["area"];
var controller = handler.RequestContext.RouteData.Values["controller"];
var action = handler.RequestContext.RouteData.Values["action"];
就像我上面說的,如果我使用的路由(/ TipHotLine),然後我得到的區域名稱就好了。
public class AgencyAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Agency";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Agency_default",
"Agency/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"tiphotline",
"tiphotline",
new
{
controller = "tiphotline",
action = "Index",
Area = "Agency"
}
);
}
}
感謝您的詳細信息。我將在早上第一件事情檢查它。 – 2015-02-08 18:07:10