.NET MVC 在action中或過濾器中或視圖中,分別如何獲取 當前請求的 控制器/視圖/區域 的名字
1)過濾器中的:
public class CMSAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var controllerName = (filterContext.RouteData.Values["controller"]).ToString().ToLower(); var actionName = (filterContext.RouteData.Values["action"]).ToString().ToLower(); var areaName = (filterContext.RouteData.DataTokens["area"] == null ? "" : filterContext.RouteData.DataTokens["area"]).ToString().ToLower(); } }
2)視圖中的:
@{ //獲取當前路由的區域名稱 var areaName = (ViewContext.RouteData.DataTokens["area"] == null ? "" : ViewContext.RouteData.DataTokens["area"]).ToString().ToLower(); var actionName=ViewContext.RouteData.Values["action"].ToString().ToLower(); var controllerName = ViewContext.RouteData.Values["controller"].ToString().ToLower(); }
3)action中:
string areaName=RouteData.DataTokens["area"].ToString().ToLower(); string controllerName = RouteData.Values["controller"].ToString().ToLower(); string actionName = RouteData.Values["action"].ToString().ToLower();
獲取控制器名稱:
ViewContext.RouteData.Values["controller"].ToString();
獲取Action名稱:
ViewContext.RouteData.Values["action"].ToString();
獲取路由參數值:
ViewContext.RouteData.Values[名稱].ToString();
如:ViewContext.RouteData.Values["ID"].ToString(); 獲取ID的值
獲取area名稱
在代碼中:
ControllerContext.RouteData.DataTokens["area"]
在View中:
ViewContext.RouteData.DataTokens["area"]