8 Stimmen

Verwenden Sie das DisplayAttribute in der Klasse

Da wir System.ComponentModel.DataAnnotations.DisplayAttribute verwenden können, um ein Label für eine Eigenschaft festzulegen, möchte ich es für die Klasse verwenden, aber das ist auf Klassen nicht erlaubt.

using System.ComponentModel.DataAnnotations;

[Display(Name = "Eine Person")]
public class Person
{
    [Display(Name = "Ein Name")]
    public string Name { get; set; }
}

Weiß jemand eine Lösung dafür?

BEARBEITEN: Ich möchte es in einer stark typisierten Ansicht verwenden. Wenn ich eine neue stark typisierte Ansicht erstelle, ist der Klassenname im HTML fest codiert, so wie dies:

@model Models.Person

    Person

        @Html.LabelFor(model => model.Name)

Ich möchte etwas Ähnliches wie die Name-Eigenschaft machen.

6voto

PhilPursglove Punkte 12361

Das Attribut DisplayName (von System.ComponentModel) erfüllt eine ähnliche Funktion und kann auf eine Klasse angewendet werden.

MSDN

1voto

Jorge Punkte 17204

Ich weiß wirklich nicht, ob es einen anderen Weg gibt, dies zu tun, aber ich benutze normalerweise nicht harte Codierung Ich erstelle eine Variable in der Ansicht und rufe sie dann dort auf, wo ich sie brauche. In Ihrem Fall, um es etwas eleganter zu machen, werde ich es machen

@{
    var viewName = typeof(Foo).Name;
}

@model Models.Person

@viewName

    @Html.LabelFor(model => model.Name)

1voto

Blake Punkte 309

Mit dem Decorator-Muster den DisplayAttribute einfach mit Ihrem eigenen benutzerdefinierten Attribut speziell für Klassen umgeben.

using System;
using System.ComponentModel.DataAnnotations;

namespace YourNameSpaceHere.Support
{
    [AttributeUsage(AttributeTargets.Class)]
    public class DisplayForClassAttribute : Attribute
    {
        protected readonly DisplayAttribute Attribute;

        public DisplayForClassAttribute()
        {
            this.Attribute = new DisplayAttribute();
        }

        public string ShortName
        {
            get { return this.Attribute.ShortName; }
            set { this.Attribute.ShortName = value; }
        }

        public string Name
        {
            get { return this.Attribute.Name; }
            set { this.Attribute.Name = value; }
        }

        public string Description
        {
            get { return this.Attribute.Description; }
            set { this.Attribute.Description = value; }
        }

        public string Prompt
        {
            get { return this.Attribute.Prompt; }
            set { this.Attribute.Prompt = value; }
        }

        public string GroupName
        {
            get { return this.Attribute.GroupName; }
            set { this.Attribute.GroupName = value; }
        }

        public Type ResourceType
        {
            get { return this.Attribute.ResourceType; }
            set { this.Attribute.ResourceType = value; }
        }

        public bool AutoGenerateField
        {
            get { return this.Attribute.AutoGenerateField; }
            set { this.Attribute.AutoGenerateField = value; }
        }

        public bool AutoGenerateFilter
        {
            get { return this.Attribute.AutoGenerateFilter; }
            set { this.Attribute.AutoGenerateFilter = value; }
        }

        public int Order
        {
            get { return this.Attribute.Order; }
            set { this.Attribute.Order = value; }
        }

        public string GetShortName()
        {
            return this.Attribute.GetShortName();
        }

        public string GetName()
        {
            return this.Attribute.GetName();
        }

        public string GetDescription()
        {
            return this.Attribute.GetDescription();
        }

        public string GetPrompt()
        {
            return this.Attribute.GetPrompt();
        }

        public string GetGroupName()
        {
            return this.Attribute.GetGroupName();
        }

        public bool? GetAutoGenerateField()
        {
            return this.Attribute.GetAutoGenerateField();
        }

        public bool? GetAutoGenerateFilter()
        {
            return this.Attribute.GetAutoGenerateFilter();
        }

        public int? GetOrder()
        {
            return this.Attribute.GetOrder();
         }  
     }
 }

Die Verwendung wäre wie folgt:

[DisplayForClass(Name = "Freigabematrix")]
public class ApprovalMatrixViewModel
{
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X