首先,我想澄清一下,我目前使用 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)] 属性会导致编译错误:“Argument must be a constant expression, typeof expression or matrix creation expression”。简而言之,属性引用是禁忌。

Razor View 使用如下标签生成 HTML
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)

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

最佳答案

像这样:

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

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

关于localization - 使用资源本地化 ASP.NET MVC4 中的 ViewModel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14082602/

10-11 02:10
查看更多