我想在我的ASP.NET MVC项目中使用多语言结构。我只有两种语言。所以我在我的数据库中为两种语言保留了两个字符串字段(例如:Header_EN和Header_TR)。
我动态地从我的.resx文件中获取当前语言值(例如:EN或TR)。但我必须在我看来使用动态模型。通常我会将它用于单一语言:
@model MyProject.Models.tTextTable
<div class="TextDetailContainer">
@Html.Raw(Model.MyTextDetail_EN)
</div>
我想为多语言使用动态模型值:
@model MyProject.Models.tTextTable
<div class="TextDetailContainer">
@Html.Raw(Model.("MyTextDetail_" + Resources.Language.CurrentLanguage))
</div>
有没有办法用这个逻辑做到这一点,还是有另一种方法在Razor中创建动态模型?
答案 0 :(得分:2)
如果您的模型是dynamic
,那么您可以将其投放到IDictionary<string, object>
并从中获取值:
var dictionary = (IDictionary<string, object>)model;
var text = dictionary ["MyTextDetail_" + Resources.Language.CurrentLanguage] as string;
虽然你应该有一个属性MyTextDetail
并在控制器中将其设置为适当的本地化值。