4

首先,我想澄清一下,我目前正在使用 ASP.NET MVC 的Model实体,ViewModel因为我的项目是基于 MVCVM 的,所以我并不是简单地将两者混淆。

无论如何,MVC 会自动为我创建一些 ViewModel 实体的属性,如下所示(来自向导,本地化为意大利语)

public class LoginModel
{
    [Required]
    [Display(Name = "Nome utente")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Memorizza account")]
    public bool RememberMe { get; set; }
}

Display将属性替换为[Display(Name = LoginViewModelResources.lblUsername)]会导致编译错误:“参数必须是常量表达式、类型表达式或矩阵创建表达式”。简而言之,属性引用是禁忌。

Razor 视图使用如下标签来生成 HTML

@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)

如何本地化 ViewModel 以便在前端显示正确的消息?

4

1 回答 1

11

像这样:

[Required]
[Display(Name = "lblUsername", ResourceType = typeof(LoginViewModelResources))]
public string UserName { get; set; }

为此,您必须定义一个LoginViewModelResources.resx文件Custom Tool=PublicResXFileCodeGenerator(您在资源文件的属性中设置)并包含一个标签,该标签lblUsername将保存本地化资源。

于 2012-12-29T14:36:41.890 回答