MVC3 应用程序中的本地化

rev*_*kpi 4 c# asp.net-mvc asp.net-mvc-3

在我的 MVC 3 应用程序中,我需要进行本地化。我想请教一下什么是最好的方法。还有一个问题。我在我的应用程序中使用这样的模型:

public class MyModel
{          
    [HiddenInput(DisplayValue = false)]
    public Guid? DepartmentId { get; set; }

    [Display(Name = "Caption")]
    public string Caption { get; set; }

    [Display(Name = "Owner")]
    public string Owner { get; set; }

    [Display(Name = "Enabled")]
    public bool Enabled { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我如何在这个模型类中使用本地化?

更新

我决定创建一个自定义的 resource.xml 而不是使用 asp.net 的 Resource .resx 实现,我如何在这个模型类中使用本地化?

Kri*_*ast 5

在 [Display] 属性中使用以下设置:

[Display(Name = "Caption", ResourceType = typeof(SomeResource))]
Run Code Online (Sandbox Code Playgroud)

其中 SomeResource 是资源文件的类名。要获得正确的命名空间和类名,只需打开添加资源文件时生成的Designer.cs文件。确保资源文件的自定义工具设置为PublicResXFileCodeGenerator。这可以在资源文件的“属性”窗口中完成。

更新原问题后:

如果您使用 resources.xml 文件,那么可能会出现重载或新属性,例如您可以使用 XPath 表达式和 xml 文件的位置。

你可以连接一个新的提供者,比如:

ModelValidatorProviders.Providers.Add(new CustomMetadataValidationProvider());
Run Code Online (Sandbox Code Playgroud)

在哪里

public class CustomMetadataValidationProvider : DataAnnotationsModelValidatorProvider
{

}
Run Code Online (Sandbox Code Playgroud)

您可能还对Orchard CMS解决它的方式感兴趣。他们使用.po 文件