2009-08-21 20 views
73

Każdy ma pomysł, jak określić tekst podczas korzystania z Html.LabelFor(c=>c.MyField). To po prostu MyField może nie być odpowiednią nazwą do wyświetlenia na ekranie, możesz zamiast tego użyć "Super fantastycznego pola", ale nie ma tu żadnych przeciążeń.Html.LabelFor Określony tekst [ASP.NET MVC 2]

Wszelkie pomysły?

Odpowiedz

128

użyć System.ComponentModel.DataAnnotations.DisplayAttribute:

[Display(Name = "My Field")] 
public string MyField { get; set; } 

Ustawienie właściwości ResourceType na swoim atrybutem będzie można użyć pliku zasobów.

(Przed NET 4 Użyj System.ComponentModel.DisplayNameAttribute z zastrzeżeniem, że wyświetlana nazwa musi być stałą czasu kompilacji.)

+0

Sprawdzę to jutro. – Kezzer

+9

Jesteś zwycięzcą. Musisz jednak użyć 'using System.ComponentModel;'. – Kezzer

+0

Mam generator kodu wypluć je automatycznie, wstawiając spacje między słowami Pascal-cased. Działa jak marzenie! – GalacticCowboy

0

Nie sprawdziłem jeszcze CP1, ale przeczytałem go przez Scott'a i wydaje mi się, że pamiętam, że kod został wygenerowany przez T4. Przypuszczam, że zawsze możesz to zmienić, ale podejrzewam, że zapewnią przeciążenia w CP2.

Edytuj: źródło jest zawsze dostępne, więc możesz po prostu zmodyfikować metodę, zmienić generator T4, a będziesz gotowy do pracy. Również umieść bilet lub prośbę (w jakiś sposób) dla tego modu, aby został on przetworzony do następnej wersji.

+0

Wstyd, robię podgląd pracy, ale nie jest to możliwe, ponieważ nasze nazwy pól są dość fałszywe w porównaniu do ich odpowiedników w opisie. – Kezzer

3

nie pobrało v2 jeszcze, więc nie mogę sprawdzić, ale wierzę, że działa jak DynamicData, w tym przypadku, że zrobisz coś takiego modelu:

[Display(Name = "The Super Fantastic Field")] 
public string MyField {get;set;} 
+0

Wyświetlacz jest niedostępny, a intellisense nie może go znaleźć w żadnej z bibliotek. – Kezzer

+0

Dodaj odwołanie do System.ComponentModel.DataAnnotations.dll i dodaj przy użyciu System.ComponentModel.DataAnnotations. – Daniel

+0

Zamiast tego dodaj odniesienie do System.ComponentModel.DataAnnotations z GAC (tj. Na karcie .NET z dodanymi referencjami) – Daniel

26

Jest nowy przeciążenie w MVC 3, więc powinieneś być w stanie specifiy niestandardowy test na etykieta dla pomocnika.

+8

@ Html.LabelFor (model => model.IdCode, "Przyjazna nazwa") –

40

proste rozwiązanie wystarczy dodać następujące zdaniem:

@Html.LabelFor(c=>c.MyField, "My Field") 
0

Istnieje 5 przeciążenia. Kilka oferuje drugi parametr "string labelText", który można ustawić na "Super fantastyczne pole".

0

Istnieją dwa sposoby
1 "bezpośrednie adnotacji"
2 "Annotatinos z zasobu"
bezpośrednie adnotacje

[Display(Name = "My Field")] 
public string MyField { get; set; } 

Annotatinos z zasobu

[Display(Name = "My_Field",ResourceType = typeof(Resource))] 
public string MyField { get; set; } 

Drugi sposób będzie wymagać, aby dodać wartość w pliku zasobów prawdopodobnie nazwana jako Resource.resx.
Użyj, który odpowiada Twojemu celowi.