在ASP.NET MVC 5 Web应用程序中,我的模型中有一个Title
字符串属性,很容易绑定到TextBoxFor
。
但是,由于本地化需求,我将Title
属性转换为Dictionary<CultureInfo, string>
。我已经阅读了网络,我可以将TextBoxFor
绑定到Model.Title[new CultureInfo("en-US")]
。
问题#1:我在假设我还可以绑定到Model.Title[Model.CurrentLanguage]
(或其他包含相关CultureInfo
的变量)时,我是否正确?
当没有本地化时,主要问题就出现了,即我第一次要求进行定位。字典尚未包含密钥,因此绑定失败并出现异常。
问题2:如何管理丢失的密钥案例?我知道我可以预先填充字典中所有需要的文化,其中包含空字符串或空字符串,但我真的不愿意这样做,因为它会消除灵活性,并且它会在每个字典中创建许多条目,而我可能只需要一个或二。
修改 也许从问题中不清楚,但我所谈论的本地化是用户数据,并将从/向数据库读/写。它们不是应用程序资源。
答案 0 :(得分:0)
IMO我会进入资源文件而不是字典的本地化方式。就像这里:https://docs.asp.net/en/latest/fundamentals/localization.html
通过这种方式,即使你没有,让我们说,本地化字符串的fr版本(没有xxx.fr.resx文件),它将返回默认字符串(这将是主资源文件中的那个 - 没有文化的那个 - xxx.resx)
答案 1 :(得分:0)
对我来说,看起来你在错误的地方做决策。您应该在控制器中进行文化/标题选择,并仅将您需要的内容传递给视图,而不是传递包含不同文化标题的字典。然后,您可以绑定到String
标题。