【问题标题】:Dynamic model binding in ASP.NET MVC Razor for multilanguageASP.NET MVC Razor 中用于多语言的动态模型绑定
【发布时间】:2016-04-14 13:48:06
【问题描述】:

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

【问题讨论】:

  • 难道不能在同一个模型上绑定,但根据当前文化填充模型吗?

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


【解决方案1】:

如果您的模型是 dynamic,那么您可以将其转换为 IDictionary&lt;string, object&gt; 并从中获取值:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多