2016-04-14 89 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並將其設置在控制器適當的本地化值。