này làm việc cho grabbing các tiêu đề (KHÔNG GIÁ TRỊ):Calling quá tải IEnumerable của DisplayNameFor
@model IEnumerable<SomeModel>
...
<th>@Html.DisplayNameFor(m => m.SomeModelProperty)</th>
Mà nếu SomeModelProperty là:
[Display(Name = "An Excellent Header")]
SomeModelProperty { get; set; }
Sau đó, nó sẽ hiển thị "Một header Tuyệt vời" trong phần tử header th
.
Bạn sẽ nghĩ điều này sẽ không làm việc vì mô hình này là IEnumerable, trong đó sẽ không có một m.SomeModelProperty, nhưng nó hoạt động vì HtmlHelper có HtmlHelper<IEnumerable<TModel>>
như vậy mà các tham số của lambda là TModel
, không IEnumerable<TModel>
. Vì điều này chỉ sử dụng siêu dữ liệu, nên không cần một mục từ bộ sưu tập. (Mặc dù intellisense trên m.
sẽ nói dối bạn và làm cho bạn nghĩ rằng đó là một bộ sưu tập). Tôi không chắc chắn khi quá tải này mát mẻ đã được thêm vào, nhưng là khá tiện dụng cho Index.cshtml và không đi với những điều funky như @Html.DisplayNameFor(m => @Model.FirstOrDefault().SomeModelProperty)
mà tôi muốn tránh.
http://msdn.microsoft.com/en-us/library/hh833697(v=vs.108).aspx
Tuy nhiên, tôi không thể tìm ra cách để có được điều này để làm việc khi mô hình của tôi không phải là IEnumerable, nhưng thay vì chứa IEnumerable như một thuộc tính, chẳng hạn như:
public class SomeList
{
public List<SomeModel> SomeModels { get; set; }
public int Page { get; set; }
public DateTime CurrentAsOf { get; set; }
}
tôi hy vọng sẽ được rõ ràng với các thông số loại chung chung, nhưng tôi nghĩ rằng các thông số loại được xác định bởi động cơ mà trickles xuống từ HtmlHelper tạo ra với trang. Tôi có thể khai báo một HtmlHelper mới trong trang, hoặc bằng cách nào đó xác định các thông số kiểu một cách rõ ràng?
Index.cshtml:
@model SomeList
//No idea how to do this:
@Html.DisplayNameFor<IEnumerable<SomeModel>>(m => m.SomeModelProperty)
Trong mã vòng lặp của bạn trong tệp Dao cạo, bạn có thể kiểm tra xem đó có phải là phần tử ** đầu tiên ** trong vòng lặp hay không và xuất phần '' bằng cách sử dụng lệnh 'DisplayNameFor'. Điều này 'if' sẽ là trước khi bạn xuất dữ liệu trong một' tr'. – Gromer
+1
+0
A
38
+4
+1
+1
5
Các vấn đề liên quan
-
1. Calling điều hành quá tải() từ con trỏ đối tượng
-
2. Calling lớp cơ sở của
-
3. Phương pháp giải quyết tình trạng quá tải liên quan đến Generics và IEnumerable
-
4. quá tải của std :: unordered_map :: chèn
-
5. quá tải của Math.sqrt: phương pháp quá tải dường như để che giấu bản gốc một
-
6. Calling java từ php
-
7. Calling Py_Finalize() từ C
-
8. Calling Lua chức năng
-
9. Calling MSTest với Powershell
-
10. Calling PowerShell Từ C#
-
11. Calling Java từ Clojure
-
12. Quá tải ngã ba()
-
13. Quá tải static_cast?
-
14. Quá trình toán tử C++ quá tải
-
15. Quá tải sau khi tăng quá mức
-
16. quá tải mới/xóa
-
17. Quá tải python in
-
18. Task.Factory.StartNew() quá tải
-
19. Quá tải hàm rvalue
-
20. Nhiều điều tra của IEnumerable
-
21. toán tử [] = quá tải?
-
22. quá tải dereference hành
-
23. Quá tải trong Ocaml
-
24. Quá tải toán tử
-
25. Quá tải trong Ruby
-
26. Làm rõ quá tải
-
27. C# quá tải với generics: lỗi hoặc tính năng?
-
28. Calling accept() từ nhiều luồng
-
29. Calling javascript sử dụng UIWebView
-
30. Calling FilterActribute OnActionExecuting trước khi OnActionExecuting của BaseController
Câu hỏi mới nhất
-
1. Đổi tên tệp bằng cách sử dụng phép toán
-
2. Sử dụng biểu tượng @ trong lập trình c?
-
3. Đặt mục tiêu macOS cho `gói swift create-xcodeproj`?
-
4. Swift - Lỗi ứng dụng khi sử dụng hai OperationQueues khác nhau với KVO
-
5. Liệt kê các bộ dữ liệu vào bảng nhị phân?
-
6. Tính năng beta EseDiskFlushConsistency được kích hoạt trong ESENT do cài đặt chế độ trang web beta 0x800000
-
7. Toán học đằng sau * 1233 >> 12 trong mã này đếm số thập phân
-
8. iTunes Connect In App Mua hết thời gian dùng thử miễn phí?
-
9. Tách gradient tuyến tính thành một đối tượng
-
10. com.huawei.systemmanager/com.huawei.systemmanager.optimize.process.ProtectActivity}; bạn đã tuyên bố hoạt động này trong tệp AndroidManifest.xml của mình chưa?
-
1. Calling điều hành quá tải() từ con trỏ đối tượng
-
2. Calling lớp cơ sở của
-
3. Phương pháp giải quyết tình trạng quá tải liên quan đến Generics và IEnumerable
-
4. quá tải của std :: unordered_map :: chèn
-
5. quá tải của Math.sqrt: phương pháp quá tải dường như để che giấu bản gốc một
-
6. Calling java từ php
-
7. Calling Py_Finalize() từ C
-
8. Calling Lua chức năng
-
9. Calling MSTest với Powershell
-
10. Calling PowerShell Từ C#
Có Tôi đã sử dụng những cách giải quyết này với hy vọng sẽ di chuyển khỏi hiện tại mà DisplayNameFor hỗ trợ nhận siêu dữ liệu từ IEnumerable – AaronLS
Câu hỏi này có giải pháp tốt và làm việc (câu trả lời được chấp nhận): http://stackoverflow.com/questions/20807869/displaynamefor-from-listobject-in-model – lxa
Trả lời
Một workaround tương tự mà làm việc ngay cả khi không có các hàng có thể là:
Nguồn
2012-12-08 18:10:13 franz
Cuộc gọi không rõ ràng giữa các phương thức hoặc thuộc tính sau: 'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor (System.Web.Mvc. HtmlHelper >, System.Linq.Expressions.Expression >) 'và' System.Web.Mvc.Html .DisplayNameExtensions.DisplayNameFor , int> ... –
cùng vấn đề như Oleg Sh ... –
Có ai quản lý để giải quyết vấn đề này? – user3407039
tôi có chính xác cùng một vấn đề bởi vì tôi đang sử dụng ViewModels vì vậy tôi có một ViewModel với một IEnumerable của các đối tượng thực tế như là một tài sản.
Tôi đã xem qua bài đăng này, nếu bạn kiểm tra câu trả lời, chàng trai đã tạo HTMLHelper của riêng mình để giải quyết vấn đề này http://forums.asp.net/t/1783733.aspx. Phiên bản của anh ấy là:
Bạn phải chuyển hai đối số liệt kê và biểu thức thay vì biểu thức bình thường để bạn có thể thích câu trả lời @franz. Tôi không thể thấy có được vòng nào phải vượt qua 2 đối số vì nó cần biết thuộc tính nào của mô hình khung nhìn mà bạn đang áp dụng biểu thức.
Nguồn
2013-11-18 11:49:05
Các vấn đề liên quan