9

次のコードがありました:

    [Required(ErrorMessage = MessageModel.translateMessage("required")))]
    [Display(Name= MessageModel.translateMessage("id"))]
    public string user_id { get; set; }

エラー メッセージを動的にしようとしていますが、コンパイル時にエラーが発生します。

"An attribute argument must be a constant expression , typeof expression or array creation expression of an attribute parameter type."

この問題の解決策はありますか?

4

3 に答える 3

12

まず、ローカライズされた文字列を含む Resource .resx ファイルを作成します。

属性を宣言するときは、ResourceType 引数を設定します。これにより、Name、ShortName、および Description 引数が値ではなくリソース キーとして使用されます。

[Display(Name = "GenreName", ShortName = "GenreShortName", Description = "GenreDescription", ResourceType = typeof(MyResources))]
public string Genre { get; set; }
于 2013-02-21T12:12:23.090 に答える
3

エラー メッセージには、「属性引数は定数式である必要があります...」と表示されます。

これは、属性への引数がDisplayName定数式 (文字列、整数など) であるか、エラー メッセージにリストされているその他の式タイプのいずれかである必要があることを意味します。

プロパティをローカライズする場合は、それをサポートする属性が必要です。ASP.Net 4 を使用している場合、DisplayAttribute は次のようになります。

[Display(Name="ID",Resource=typeof(MessageModel.translateMessage("id")))]
public string user_id { get; set; }

また、ダーリンからのこの回答を確認してください

于 2013-02-21T09:58:57.770 に答える