4

まず、プロジェクトがMVCVMに基づいているため、現在ASP.NET MVCのModelエンティティを使用していることを明確にしたいので、2つを単純に混同しているわけではありません。ViewModel

とにかく、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)]、コンパイルエラーが発生します:「引数は定数式、typeof式、または行列作成式である必要があります」。一言で言えば、プロパティ参照はノーノーです。

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 に答える