如何在ASP .NET MVC3(beta)中获取当前viewName(不是动作名称)

时间:2012-01-18 12:38:53

标签: asp.net asp.net-mvc asp.net-mvc-3 internationalization

我想使用国际化,因为我需要当前的viewname(而不是actionname),以便我可以相应地显示所选文化的特定视图。

protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
          string cultureName = Thread.CurrentThread.CurrentCulture.Name;
        //String ViewNameOnly= do something to get viewName 
         if (string.IsNullOrEmpty(ViewNameOnly))
            ViewNameOnly= filterContext.RouteData.Values["action"] + "." + cultureName;

    }

2 个答案:

答案 0 :(得分:2)

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    ViewResultBase view = filterContext.Result as ViewResultBase;
    if (view != null) {
        string viewName = view.ViewName;
    }
}

答案 1 :(得分:1)

filterContext.Result将包含从控制器操作返回的结果。这是ActionResult,它是各种结果的基类。如果它是ViewResultBase(或其派生类型之一),那么ViewName属性将为您提供所需的内容。