2009-08-21 9 views
73

Bất cứ ai cũng có ý tưởng về cách chỉ định văn bản khi sử dụng Html.LabelFor(c=>c.MyField). Chỉ có MyField có thể không phải là tên thích hợp để hiển thị trên màn hình, thay vào đó bạn có thể muốn "Trường Siêu Fantastic", nhưng dường như không có bất kỳ sự quá tải nào.Html.LabelFor Specified Text [ASP.NET MVC 2]

Bất kỳ ý tưởng nào?

Trả lời

128

Bạn sử dụng System.ComponentModel.DataAnnotations.DisplayAttribute:

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

Đặt thuộc tính ResourceType trên thuộc tính của bạn sẽ cho phép bạn sử dụng tệp tài nguyên.

(Trước NET 4 sử dụng System.ComponentModel.DisplayNameAttribute với sự báo trước rằng tên hiển thị phải là một hằng số thời gian biên dịch.)

+0

Tôi sẽ kiểm tra vào ngày mai. – Kezzer

+9

Bạn là người chiến thắng. Bạn phải có 'using System.ComponentModel;' mặc dù. – Kezzer

+0

Tôi có trình tạo mã của tôi tự động nhổ chúng ra, chèn dấu cách giữa các từ được lồng vào Pascal. Làm việc như một say mê! – GalacticCowboy

0

Tôi chưa xem CP1 nhưng tôi đã đọc qua bản phát hành của Scott và dường như tôi nhớ lại rằng mã được tạo bởi T4. Tôi cho rằng bạn luôn có thể sửa đổi điều đó, nhưng tôi nghi ngờ rằng họ sẽ cung cấp quá tải trong CP2.

Chỉnh sửa: Nguồn luôn có sẵn và do đó bạn chỉ có thể sửa đổi phương thức, thay đổi trình tạo T4, và bạn sẽ sẵn sàng sử dụng. Cũng đặt trong một vé hoặc yêu cầu (bằng cách nào đó) cho mod đó để nó được làm việc vào phiên bản tiếp theo.

+0

Xấu hổ, tôi đang làm một bản xem trước công việc nhưng nó không thực sự khả thi vì tên trường của chúng tôi khá giả mạo so với các đối tác mô tả của chúng. – Kezzer

3

tôi chưa tải v2 nào, vì vậy tôi không thể kiểm tra, nhưng tôi tin rằng nó hoạt động như DynamicData, trong trường hợp bạn muốn làm điều gì đó như thế này trên mô hình của bạn:

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

Hiển thị không có sẵn, và intellisense không thể tìm thấy nó trong bất kỳ libs hoặc. – Kezzer

+0

Thêm tham chiếu đến System.ComponentModel.DataAnnotations.dll và thêm bằng System.ComponentModel.DataAnnotations. – Daniel

+0

Thay vào đó, hãy thêm tham chiếu đến System.ComponentModel.DataAnnotations từ GAC (ví dụ trong tab .NET của tham chiếu thêm) – Daniel

26

Có một tình trạng quá tải mới trong MVC 3, do đó bạn sẽ có thể thể chỉ định kiểm tra tùy chỉnh cho người trợ giúp labelfor.

+8

@ Html.LabelFor (model => model.IdCode, "Friendly Name") –

40

Giải pháp dễ dàng chỉ cần thêm như sau trong giao diện:

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

Có 5 quá tải. Một số tham số thứ hai cung cấp của "string labelText", mà bạn sẽ đặt thành "The Super Fantastic Field".

0

Có hai cách
1 "chú thích trực tiếp"
2 "Annotatinos với một nguồn tài nguyên"
chú thích trực tiếp

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

Annotatinos với một nguồn lực

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

cách thứ hai sẽ đòi hỏi thêm một giá trị trong tệp tài nguyên có thể được đặt tên là Resource.resx.
Sử dụng phù hợp với mục đích của bạn.