2016-04-14 111 views
0

我想在我的ASP.NET MVC项目中使用多语言结构。我只有两种语言。所以我在两个语言的数据库中保留了两个字符串字段(例如:Header_EN和Header_TR)。动态模型绑定在ASP.NET MVC剃刀多语言

我从我的.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

难道不可能绑定在同一个模型上,而是根据当前的文化来填充模型吗? – PhilDulac

回答

2

如果你的模型是dynamic,那么你可以将它转换为IDictionary<string, object>,并从中获得的价值:

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

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