Działa to dla chwytając nagłówki (BEZ WARTOŚCI):Wywołanie IEnumerable przeciążenie DisplayNameFor
@model IEnumerable<SomeModel>
...
<th>@Html.DisplayNameFor(m => m.SomeModelProperty)</th>
Które jeśli SomeModelProperty były:
[Display(Name = "An Excellent Header")]
SomeModelProperty { get; set; }
Wtedy wyświetli się "doskonałą Nagłówek" w element nagłówka th
.
Można by pomyśleć, to nie będzie działać, ponieważ model jest IEnumerable, który nie miałby m.SomeModelProperty, ale to działa, ponieważ HtmlHelper posiada HtmlHelper<IEnumerable<TModel>>
taki sposób, że parametr lambda jest TModel
nie IEnumerable<TModel>
. Ponieważ to po prostu używa metadanych, nie ma potrzeby, aby element z kolekcji. (Chociaż intellisense na m.
będzie cię okłamywać i sprawi, że pomyślisz, że to kolekcja). Nie jestem pewien, kiedy dodano to super przeciążenie, ale jest całkiem przydatny w przypadku Index.cshtml i rezygnuje z funky takich, jak @Html.DisplayNameFor(m => @Model.FirstOrDefault().SomeModelProperty)
, których chcę uniknąć.
http://msdn.microsoft.com/en-us/library/hh833697(v=vs.108).aspx
Jednak nie mogę dowiedzieć się, jak uzyskać to do pracy, kiedy mój model nie jest IEnumerable, lecz zawiera IEnumerable jako właściwości, takie jak:
public class SomeList
{
public List<SomeModel> SomeModels { get; set; }
public int Page { get; set; }
public DateTime CurrentAsOf { get; set; }
}
byłem mając nadzieję na wyraźne podanie ogólnych parametrów typów, ale myślę, że parametry typu są określane przez silnik, który spływa z HtmlHelpera utworzonego ze stroną. Czy mogę zadeklarować nowy HtmlHelper na stronie, czy też w jakiś sposób dokładnie określić parametry typu?
Index.cshtml:
@model SomeList
//No idea how to do this:
@Html.DisplayNameFor<IEnumerable<SomeModel>>(m => m.SomeModelProperty)
W swoim kodzie pętli w pliku Razor możesz sprawdzić, czy jest to ** pierwszy element w pętli, i wypisać '' używając wywołań 'DisplayNameFor'. To 'if' byłoby przed częścią, w której wypisujesz dane w' tr'. – Gromer
+1
+0
A
38
+4
+1
+1
5
Powiązane problemy
-
1. Wywołanie nawias przeciążenie podany wskaźnik
-
2. kompilator nie wywołanie odpowiedniego przeciążenie rodzajowe kiedy zapadają typu wartości
-
3. Java metoda przeciążenie - dwuznaczność
-
4. C++ Problem przesłanianie/przeciążenie
-
5. operator [] = przeciążenie?
-
6. JAVA Przeciążenie obiektu/łańcucha znaków
-
7. Jak uzyskać dostęp do DisplayNameFor w zagnieżdżonych modelu
-
8. rozdzielczości Przeciążenie z Ref-kwalifikatorów
-
9. IEnumerable ciąg
-
10. Buforowanie IEnumerable
-
11. IEnumerable paradox
-
12. IEnumerable OrderBy
-
13. Przeciążenie Bool/String Niejednoznaczność
-
14. Operator przeciążenie z rodzajowych
-
15. Przeciążenie SignalR Hub
-
16. Przeciążenie operatora strumienia
-
17. Przeciążenie wydruku python
-
18. Przeciążenie operatora C++ [] []
-
19. Przeciążenie operatora w Delphi
-
20. Przeciążenie C++ [] z transformacją
-
21. Równe przeciążenie w Kotlin
-
22. Operator Przeciążenie w struktury
-
23. Specyficzne przeciążenie maszynopisu
-
24. Przeciążenie globalnego operatora typograficznego?
-
25. Przeciążenie operatora w Clojure
-
26. Przeciążenie + =, +, ==, i = operatorzy
-
27. Szablon funkcji przeciążenie
-
28. Przeciążenie istniejącej metody "toInt"
-
29. Kontrawariancja i przeciążenie operatora
-
30. Wywołanie klasy bazowej za
Ostatnie pytanie
-
1. W C operatora # potrójnego daje błąd: tylko zadanie, wezwanie, przyrost, ubytek i nowych wyrażeń przedmiot mogą być wykorzystywane jako oświadczenie
-
2. async/czekaj na akcje w Vuex
-
3. Czy możesz prześledzić, jak działa ta składana funkcja lambda Haskella?
-
4. Jak opisać argumenty funkcji w gramatyce PEG
-
5. Mapa funkcja ifPresent
-
6. Jaka jest różnica między sizeof (T) i Unsafe.SizeOf <T>()?
-
7. Dyspozytornia priorytetowa w WPF
-
8. Echarts - niestandardowa cecha zestawu narzędzi znak/komentarz
-
9. Jak zatwierdzić fragmenty skryptu z pliku Jennfile za pomocą konsoli groovy?
-
10. Kiedy należy używać `publishReplay` vs` shareReplay`?
-
1. Wywołanie nawias przeciążenie podany wskaźnik
-
2. kompilator nie wywołanie odpowiedniego przeciążenie rodzajowe kiedy zapadają typu wartości
-
3. Java metoda przeciążenie - dwuznaczność
-
4. C++ Problem przesłanianie/przeciążenie
-
5. operator [] = przeciążenie?
-
6. JAVA Przeciążenie obiektu/łańcucha znaków
-
7. Jak uzyskać dostęp do DisplayNameFor w zagnieżdżonych modelu
-
8. rozdzielczości Przeciążenie z Ref-kwalifikatorów
-
9. IEnumerable ciąg
-
10. Buforowanie IEnumerable
Tak Użyłem tego typu obejść, mając nadzieję odejść od tego teraz, gdy DisplayNameFor obsługuje pobieranie metadanych z IEnumerable – AaronLS
To pytanie ma dobre i działające rozwiązanie (zaakceptowana odpowiedź): http://stackoverflow.com/questions/20807869/displaynamefor-from-listobject-in-model – lxa
Odpowiedz
Inny podobny obejście, które działa nawet wtedy, gdy nie istnieją żadne wiersze mogą być:
Źródło
2012-12-08 18:10:13 franz
Wywołanie jest niejednoznaczne między następującymi metodami lub właściwościami: "System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor (System.Web.Mvc. HtmlHelper >, System.Linq.Expressions.Expression >) 'oraz' System.Web.Mvc.Html .DisplayNameExtensions.DisplayNameFor , int> ... –
to samo problem jako Oleg Sh ... –
Czy ktoś zdołał rozwiązać ten problem? – user3407039
Mam dokładnie ten sam problem, ponieważ używam ViewModels więc mam ViewModel z IEnumerable rzeczywistych obiektów jako właściwość.
Natknąłem się na ten wpis, gdzie po sprawdzeniu odpowiedzi facet stworzył własny HTMLHelper, aby rozwiązać ten problem: http://forums.asp.net/t/1783733.aspx. Jego wersja to:
Musisz podać dwa wyliczenia i wyrazy argumentów, a nie zwykłe wyrażenie, więc możesz preferować odpowiedź @franz. Nie widzę, aby istniała i tak konieczność przekazania 2 argumentów, ponieważ musi ona wiedzieć, do której właściwości modelu widoku stosujesz wyrażenie.
Źródło
2013-11-18 11:49:05
Powiązane problemy