如何为mvc3中的某个@Model属性进行本地化

时间:2012-03-15 13:01:01

标签: asp.net-mvc asp.net-mvc-3 razor localization

我已经开始研究MVC项目了,我遇到了一些我认为自己陷入困境的情况。我需要将现有的MVC3站点转换为多语言。因为我是新手,我可能会在解释时使用错误的单词/ definations / keywords for MVC3,所以请光临我。

我有一个HeaderPage.cshtml,它有一个绑定到它的视图模型

@model IHeaderPage

它输出了这个模型的属性:

<h3>@Model.HeaderName</h3>

我从MainPage.cshtml中调用了这个视图

@Html.Partial("HeaderPage")

现在在Controller的Action方法中,我改变了模型的属性

objHeaderPage.HeaderName="Fill your Registeration details";

当我运行项目时,我会看到文本“填写您的注册详情”。

现在我该如何更改文本值,即它应该从我的resx文件中读取。 我已经在 App_LocalResources 文件夹中创建了resx文件。 我听说过,它可以通过显示属性来完成..但我该怎么做呢还是还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:1)

This应该回答有关使用DisplayAttribute的问题。

我对我的ViewModel的每个属性使用DisplayAttribute,但是如果你必须处理自定义消息,例如“由于错误而无法保存记录......”或类似的东西,你可以简单地使用

 objHeaderPage.HeaderName = Resources.ResourceMessageName; 

框架将自动选择正确的文化。 我更喜欢将所有资源放在一个单独的项目中,以便在需要时只部署dll资源,但您也可以考虑部署resx文件以直接在生产计算机上编辑它们。我想这取决于你喜欢/需要的东西。

答案 1 :(得分:0)

在ViewModel中使用System.ComponentModel.DataAnnotations命名空间。

[Display(Name="Fill your Registeration details")]
public string HeaderName{get;set;}

您也可以使用资源文件。只需查看http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.aspx

即可