W maszynce do golenia użyłem LabelFor
metody pomocniczej do wyświetlenia nazwy
Ale nazwa wyświetlana nie wydaje się być dobra do wyświetlenia. więc muszę zmienić swoją nazwę wyświetlaną, jak to zrobić ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
asp.net-mvc-3
html-helper
Pozorny
źródło
źródło
Odpowiedzi:
Możesz ozdobić swoją właściwość modelu widoku
[DisplayName]
atrybutem i określić używany tekst:[DisplayName("foo bar")] public string SomekingStatus { get; set; }
Lub użyj innego przeciążenia helpera LabelFor, który pozwala określić tekst:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
I nie, nie możesz określić nazwy klasy w MVC3, tak jak próbowałeś to zrobić, ponieważ
LabelFor
pomocnik tego nie obsługuje. Jednak zadziałałoby to w MVC4 lub 5.źródło
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
To było stare pytanie, ale istniejące odpowiedzi pomijają poważny problem wyrzucania atrybutów niestandardowych podczas regeneracji modelu. Dodaję bardziej szczegółową odpowiedź, aby uwzględnić aktualnie dostępne opcje.
Masz 3 opcje:
[DisplayName("Name goes here")]
atrybut do klasy modelu danych. Wadą jest to, że jest to wyrzucane za każdym razem, gdy ponownie generujesz modele danych.Html.LabelFor
. np.@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Odniesienie: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx Wadą jest to, że musisz powtórzyć etykietę w każdym widoku.Opcja 3 - Dodaj klasę metadanych:
Microsoft pozwala na dekorowanie właściwości w klasie Entity Framework, bez modyfikowania istniejącej klasy ! Dzieje się tak dzięki klasom metadanych, które są dołączane do klas bazy danych (w rzeczywistości boczne rozszerzenie klasy EF). Umożliwia to dodawanie atrybutów do skojarzonej klasy, a nie do samej klasy, dzięki czemu zmiany nie zostaną utracone podczas ponownego generowania modeli danych .
Na przykład, jeśli klasa danych
MyModel
oSomekingStatus
nieruchomości, można zrobić to tak:Najpierw zadeklaruj częściową klasę o tej samej nazwie (i używając tej samej przestrzeni nazw), co pozwala na dodanie atrybutu klasy bez przesłonięcia:
[MetadataType(typeof(MyModelMetaData))] public partial class MyModel { }
Wszystkie generowane klasy modelu danych są klasami częściowymi, które pozwalają na dodawanie dodatkowych właściwości i metod poprzez proste tworzenie większej liczby klas o tej samej nazwie (jest to bardzo przydatne i często używam go np. Do udostępnienia sformatowanych ciągowych wersji innych typów pól w modelu ).
Krok 2: Dodaj klasę metatadanych, do której odwołuje się Twoja nowa klasa częściowa:
public class MyModelMetaData { // Apply DisplayNameAttribute (or any other attributes) [DisplayName("My New Label")] public string SomekingStatus; }
Odniesienie: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Uwagi:
[required]
itp.), Więc może być konieczne zduplikowanie tych z klasy metadanych.źródło
Możesz zmienić tekst etykiet, ozdabiając nieruchomość
DisplayName
atrybutem.[DisplayName("Someking Status")] public string SomekingStatus { get; set; }
Lub możesz jawnie napisać surowy kod HTML:
<label for="SomekingStatus" class="control-label">Someking Status</label>
źródło
Udekoruj właściwość modelu atrybutem DisplayName.
źródło
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
źródło