나는 이것을 달성하기 위해 여러 가지 방법이있다 생각하지만 당신은 아래에이 일을 수행 할 수 있습니다.
은 첫째로 당신은 즉 ViewName_ EN-US .cshtml 자신의 이름으로 문화 접미사를 추가하여보기에 어떤 이름 지정 규칙을 가정 할 수있다, ViewName_ PL-PL .cshtml 등
그렇다면, 현재 문화권을 기반으로 각 활동에서이 이름을 따로 구성하지 마십시오. 작업이 지금 처리 현지화가 필요하지 않습니다
public class BaseController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var view = filterContext.Result as ViewResultBase;
if(view != null)
{
var viewName = string.IsNullOrEmpty(view.ViewName)
? filterContext.RouteData.Values["action"].ToString()
: view.ViewName; // retrieve the custom view name if provided or default action name otherwise
var cultureName = Thread.CurrentThread.CurrentUICulture.Name;
var localizedViewName = string.Format("{0}_{1}", viewName, cultureName); // construct composite, culture-aware name
if (ViewExists(localizedViewName)) // safety check in case not all your views are localized - if so, just return the default name
{
filterContext.Result = new ViewResult { ViewName = localizedViewName };
}
}
}
private bool ViewExists(string name)
{
var result = ViewEngines.Engines.FindView(ControllerContext, name, null);
return result.View != null;
}
}
:
public class HomeController : BaseController
{
public ActionResult AboutUs()
{
// (...) nothing special here
return View();
}
}