MVC 在Action中,過濾器中,或檢視中,獲取當前請求的 控制器/檢視/區域的名字及跳轉
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"]
附:過濾器上下文中跳轉
filterContext.HttpContext.Response.Redirect("/Home/Contact");
或
filterContext.Result = new RedirectResult("/Home/Contact");