我想设置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]
Attribute`)
有什么想法吗?
您可以尝试使用动作过滤器,例如
public class SetLanguageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//Use actionContext.Request to access your request
}
}
然后可以使用[SetLanguage]属性来装饰该操作方法,可以根据需要将其设置为区域性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句