3

(別のプロジェクトから) エンティティに を追加したいのですDisplayAttributeClient、MVC または UI レイヤーに固有の属性でエンティティを汚染したくありません。そのため、エンティティから継承DisplayAttributeするビュー モデルにメタデータ クラスを適用して、を追加することを計画しました。

Clientエンティティから継承し、を使用しMetadataTypeAttributeて表示属性を追加しようとすると、ブラウザに表示されません。エンティティにメタデータを追加できる分離と機能を実現する方法を知っている人はいますか?

Clientエンティティ クラス:

public class Client
{
    private string firstName;

    private string lastName;

    private string homeTelephone;

    private string workTelephone;

    private string mobileTelephone;

    private string emailAddress;

    private string notes;

    public Title Title { get; set; }

    public string FirstName
    {
        get { return this.firstName ?? string.Empty; }

        set { this.firstName = value; }
    }

    public string LastName
    {
        get { return this.lastName ?? string.Empty; }

        set { this.lastName = value; }
    }

    public string FullName
    {
        get
        {
            List<string> nameParts = new List<string>();

            if (this.Title != Title.None)
            {
                nameParts.Add(this.Title.ToString());
            }

            if (this.FirstName.Length > 0)
            {
                nameParts.Add(this.FirstName.ToString());
            }

            if (this.LastName.Length > 0)
            {
                nameParts.Add(this.LastName.ToString());
            }

            return string.Join(" ", nameParts);
        }
    }

    public Address Address { get; set; }

    public string HomeTelephone
    {
        get { return this.homeTelephone ?? string.Empty; }

        set { this.homeTelephone = value; }
    }

    public string WorkTelephone
    {
        get { return this.workTelephone ?? string.Empty; }

        set { this.workTelephone = value; }
    }

    public string MobileTelephone
    {
        get { return this.mobileTelephone ?? string.Empty; }

        set { this.mobileTelephone = value; }
    }

    public string EmailAddress
    {
        get { return this.emailAddress ?? string.Empty; }

        set { this.emailAddress = value; }
    }

    public string Notes
    {
        get { return this.notes ?? string.Empty; }

        set { this.notes = value; }
    }

    public Client()
    {
        this.Address = new Address();
    }
}

ClientViewModelビュー モデル クラス:

[MetadataType(typeof(ClientMetaData))]
public class ClientViewModel : Client
{
    internal class ClientMetaData
    {
        [Display(ResourceType = typeof(ResourceStrings), Name = "Client_FirstName_Label")]
        public string FirstName { get; set; }
    }
}
4

1 に答える 1

2

I think you have change the typeof parameter to:

[MetadataType(typeof(ClientViewModel.ClientMetaData))]
public class ClientViewModel : Client
{
    internal class ClientMetaData
    {
        [Display(ResourceType = typeof(ResourceStrings), Name = "Client_FirstName_Label")]
        public string FirstName { get; set; }
    }
}
于 2013-02-06T18:07:25.640 に答える