2011-11-09 31 views
20

Việc sử dụng thuộc tính UIHint trong MVC là gì. Bất cứ ai có thể vui lòng cung cấp cho tôi một ví dụ đơn giản về cách sử dụng nó và những gì nó làm.Thuộc tính UIHint trong MVC

Trả lời

33

Khi sử dụng một màn hình hoặc các biên tập mẫu, UIHint sẽ cho nó mà mẫu để sử dụng:

[UIHint("SomeTemplate")] 
public class MyViewModel 
{ 
    public string SomeProperty { get; set; } 
} 

Nếu bạn tạo một mẫu hiển thị được gọi SomeTemplate.ascx (vì bạn là MVC2) trong Views/Shared/DisplayTemplates hoặc Views/{Controller}/DisplayTemplates sau đó nó sẽ sử dụng mẫu đó khi bạn làm:

@Html.DisplayForModel() // if Model is MyViewModel 

hoặc

@Html.DisplayFor(m => m.ModelProperty) // if ModelProperty is of type MyViewModel 

chỉnh sửa
Nếu bạn muốn chỉ định này về mặt kĩ tài sản:

public class MyViewModel 
{ 
    [UIHint("Birthday")] 
    public DateTime DateOfBirth { get; set; } 
} 

Bạn có thể tạo một mẫu hiển thị/biên tập gọi là sinh nhật trong DisplayTemplates hoặc thư mục EditorTemplates trong hoặc/Views/Shared hoặc/Lần đọc/{Controller}. Sau đó, khi bạn làm:

@Html.DisplayFor(m => m.DateOfBirth) 

hoặc

@Html.EditorFor(m => m.DateOfBirth) 

Nó sẽ sử dụng mẫu quy định tại UIHint

+0

Cảm ơn đã trả lời Great !! Nhưng làm thế nào t chỉ định trên cấp tài sản .. cần đại diện rõ ràng hơn xin vui lòng – user1030181

+1

Đằng đó, đó là chính xác những gì tôi đã dành một giờ tìm kiếm làm thế nào để làm. Tại sao họ làm cho nó khó mà tìm được tài sản này? – neminem

+2

Không thể được sử dụng trên một 'lớp', chỉ trên các thuộc tính và các trường. – Mrchief

15

UIHint chỉ có thể được sử dụng trên một tài sản không phải trên một khai báo lớp như bang Dismissile. Tôi đang sử dụng MVC3 vì vậy điều này có thể đã thay đổi từ MVC2.

"Thuộc tính 'UIHint' không hợp lệ vào loại tuyên bố này. Nó chỉ có giá trị trên 'tài sản, indexer, trường' khai báo"

Các vấn đề liên quan