2016-04-14 24 views
0

ASP.NET MVC projemde çok dilli yapı kullanmak istiyorum. Sadece iki dilim var. Bu yüzden iki dize için iki dize alanımı veriyorum (Ör: Header_EN ve Header_TR).Çoklu dil için ASP.NET MVC Razor'da dinamik model bağlama

Güncel dil değerimi .resx dosyasından dinamik olarak alıyorum (Örn: EN veya TR). Ama benim görüşüme göre dinamik bir model kullanmalıyım. Normalde tek bir dil için bu kullanıyorum:

@model MyProject.Models.tTextTable 

    <div class="TextDetailContainer"> 
     @Html.Raw(Model.MyTextDetail_EN) 
    </div> 

Ve ben böyle dilli bir şey için dinamik bir modeli değeri kullanmak istiyorum:

@model MyProject.Models.tTextTable 

    <div class="TextDetailContainer"> 
     @Html.Raw(Model.("MyTextDetail_" + Resources.Language.CurrentLanguage)) 
    </div> 

bu mantıkla bunu yapmak olası bir yolu var mı ya da Razor'da dinamik model yaratmanın başka bir yolu var mı? senin modelse

+0

Aynı modele bağlanmak mümkün değil, ancak mevcut kültürü temel alarak modeli doldurmak mümkün değil mi? – PhilDulac

cevap

2

dynamic sonra IDictionary<string, object> için döküm ve ondan değer elde edebilirsiniz:

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

muhtemelen bir mülk MyTextDetail ve lokalize değeri uygun kaynaklarına denetleyicisi bunu belirlesin rağmen.

İlgili konular