In der Rasiermaschine habe ich die LabelFor
Hilfsmethode verwendet, um den Namen anzuzeigen
Aber der Anzeigename scheint nicht gut anzuzeigen zu sein. Also muss ich meinen Anzeigenamen ändern, wie es geht ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
asp.net-mvc-3
html-helper
Schein
quelle
quelle
Antworten:
Sie können Ihre Ansichtsmodelleigenschaft mit dem
[DisplayName]
Attribut dekorieren und den zu verwendenden Text angeben:Oder verwenden Sie eine andere Überladung des LabelFor-Hilfsprogramms, mit der Sie den Text angeben können:
Und nein, Sie können in MVC3 keinen Klassennamen angeben, wie Sie es versucht haben, da der
LabelFor
Helfer dies nicht unterstützt. Dies würde jedoch in MVC4 oder 5 funktionieren.quelle
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
Dies war eine alte Frage, aber vorhandene Antworten ignorieren das ernsthafte Problem, benutzerdefinierte Attribute wegzuwerfen, wenn Sie das Modell neu generieren. Ich füge eine detailliertere Antwort hinzu, um die derzeit verfügbaren Optionen abzudecken.
Sie haben 3 Möglichkeiten:
[DisplayName("Name goes here")]
der Datenmodellklasse Attribut hinzu. Der Nachteil ist, dass dies weggeworfen wird, wenn Sie die Datenmodelle neu generieren.Html.LabelFor
. zB@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Referenz: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx Der Nachteil dabei ist, dass Sie das Etikett wiederholen müssen in jeder Sicht.Option 3 - Hinzufügen einer Metadatenklasse:
Microsoft ermöglicht das Dekorieren von Eigenschaften für eine Entity Framework-Klasse, ohne die vorhandene Klasse zu ändern ! Dies durch Metadatenklassen, die an Ihre Datenbankklassen angehängt werden (effektiv eine seitliche Erweiterung Ihrer EF-Klasse). Auf diese Weise können Attribute der zugeordneten Klasse und nicht der Klasse selbst hinzugefügt werden , sodass die Änderungen nicht verloren gehen, wenn Sie die Datenmodelle neu generieren .
Wenn sich Ihre Datenklasse beispielsweise
MyModel
in einerSomekingStatus
Eigenschaft befindet, können Sie dies folgendermaßen tun:Deklarieren Sie zunächst eine Teilklasse mit demselben Namen (und unter Verwendung desselben Namespace), mit der Sie ein Klassenattribut hinzufügen können, ohne überschrieben zu werden:
Alle generierten Datenmodellklassen sind Teilklassen, mit denen Sie zusätzliche Eigenschaften und Methoden hinzufügen können, indem Sie einfach mehr Klassen mit demselben Namen erstellen (dies ist sehr praktisch und ich verwende es häufig, z. B. um formatierte Zeichenfolgenversionen anderer Feldtypen im Modell bereitzustellen ).
Schritt 2: Fügen Sie eine Metatadatenklasse hinzu, auf die Ihre neue Teilklasse verweist:
Referenz: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Anmerkungen:
[required]
usw.) ignoriert, sodass Sie möglicherweise die Attribute in der Metadatenklasse duplizieren müssen.quelle
Sie können den Text der Beschriftungen ändern, indem Sie die Eigenschaft mit dem
DisplayName
Attribut schmücken .Oder Sie können den rohen HTML-Code explizit schreiben:
quelle
Dekorieren Sie die Modelleigenschaft mit dem DisplayName-Attribut.
quelle
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
quelle