ASP.NET MVC Razor中用于多语言的动态模型绑定

时间:2016-04-14 13:48:06

标签: c# asp.net-mvc razor multilingual

我想在我的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中创建动态模型?

1 个答案:

答案 0 :(得分:2)

如果您的模型是dynamic,那么您可以将其投放到IDictionary<string, object>并从中获取值:

var dictionary = (IDictionary<string, object>)model;
var text = dictionary ["MyTextDetail_" + Resources.Language.CurrentLanguage] as string;

虽然你应该有一个属性MyTextDetail并在控制器中将其设置为适当的本地化值。