我想在Language
(进行国际化全球化)中将controller
设置为Web API
。
我正在编写一个名为SetLanguage
的属性并用它装饰我的web-api controller
类似的东西,
[SetLanguage]
public ServiceRequestController : ApiController
但问题是:
public class SetAcceptLanguageHeader : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
if (controllerSettings.Request.Headers.AcceptLanguage != null && controllerContext.Request.Headers.AcceptLanguage.Count > 0)
{
var culture = new CultureInfo(controllerContext.Request.Headers.AcceptLanguage.First().Value);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
}
}
但是,我无法执行此操作,因为我无法从Request
访问controllerSettings
。
(虽然我知道使用BaseController
并重写Initialize
方法来实现相同的想法,但我正在尝试使用此[SetLanguage]
属性。)
任何想法如何?
答案 0 :(得分:2)
您可以尝试使用
等操作过滤器public class SetLanguageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//Use actionContext.Request to access your request
}
}
然后可以使用[SetLanguage]属性来设置动作方法,该属性可以根据需要将其设置为文化。