使用带有 ViewBag 变量的本地化资源
Posted
技术标签:
【中文标题】使用带有 ViewBag 变量的本地化资源【英文标题】:Using localize resource with ViewBag variable 【发布时间】:2021-12-16 23:17:22 【问题描述】:我的页面中有以下代码:
@ foreach (var cat in ViewBag.Categories)
<div class="swiper-slide">@cat.CateName</div>
cat 变量包含两个属性CateName
和CateNameLocalized
。
当我在我的项目中使用本地化时,如何根据当前文化获得正确的属性。
我尝试将这些变量放入我的资源文件(CateName、.CateName、cat.CateName)中。
但没有任何效果!
可能出了什么问题?任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您需要DisplayNameAttribute。您可以保留一个属性而不是两个属性,并使用DisplayName
属性对其进行装饰。您可以提供资源键和资源类型作为参数。例如:
[Display(Name = ResourceKeys.YourEmail, ResourceType = typeof(Resources.ViewModels_HomeViewModel))]
public string CateName get; set;
它将根据当前的文化显示适当的文本。
除此之外,如果你真的想使用两个不同的属性,那么你可以从Thread.CurrentThread.CurrentCulture.Name
获取当前的文化值,并添加if
子句然后渲染相应的属性。例如:
if(Thread.CurrentThread.CurrentCulture.Name == "en-Us")
@cat.CateName
else
@cat.CateNameLocalized
以上代码仅供参考
【讨论】:
以上是关于使用带有 ViewBag 变量的本地化资源的主要内容,如果未能解决你的问题,请参考以下文章