ASP.NET Core多语言API响应如何移除元数据仅返回值
移除ASP.NET Core多语言API响应中的多余元数据,仅返回本地化文本
问题出在你直接返回了LocalizedString对象(_localizer["No Data"]的返回值类型),这个对象自带name、resourceNotFound等元数据字段。要只返回纯本地化文本内容,只需提取它的Value属性即可。
解决方案1:直接返回Value属性
修改控制器中的返回语句,明确获取LocalizedString的Value:
private readonly IStringLocalizer<SharedResources> _localizer; public ProfileController(IStringLocalizer<SharedResources> localizer) { _localizer = localizer; } [HttpGet("home-company")] public IActionResult GetHomeCompany() { // ... 你的业务逻辑代码 if (company != null) { return Ok(complist); } // 提取Value属性返回,仅输出本地化文本 return NotFound(_localizer["No Data"].Value); }
解决方案2:封装扩展方法(复用场景)
如果多个控制器或方法都需要获取纯本地化文本,可以封装一个扩展方法简化调用:
public static class StringLocalizerExtensions { public static string GetLocalizedText(this IStringLocalizer localizer, string key) { return localizer[key].Value; } }
之后在控制器中这样使用:
return NotFound(_localizer.GetLocalizedText("No Data"));
效果验证
修改完成后,API响应将仅返回对应的本地化字符串(比如英文环境返回"No Data",印尼语环境返回对应的翻译文本),不会包含多余的元数据字段。
内容的提问来源于stack exchange,提问作者S S
相关产品推荐
相关产品推荐

