Questo funziona per afferrare le intestazioni (non valori):Calling sovraccarico IEnumerable di DisplayNameFor
@model IEnumerable<SomeModel>
...
<th>@Html.DisplayNameFor(m => m.SomeModelProperty)</th>
Che se SomeModelProperty erano:
[Display(Name = "An Excellent Header")]
SomeModelProperty { get; set; }
allora sarebbe visualizzare "un'intestazione eccellente" in l'intestazione th
elemento.
si potrebbe pensare che questo non avrebbe funzionato perché il modello è IEnumerable, che non avrebbe un m.SomeModelProperty, ma funziona perché HtmlHelper ha un HtmlHelper<IEnumerable<TModel>>
tale che il parametro della lambda è TModel
, non IEnumerable<TModel>
. Poiché ciò utilizza solo i metadati, non è necessario un articolo dalla raccolta. (Anche se intellisense su m.
ti mentirà e ti farà pensare che sia una raccolta). Non sono sicuro quando è stato aggiunto questo fantastico sovraccarico, ma è piuttosto utile per Index.cshtml e non funziona con cose funky come @Html.DisplayNameFor(m => @Model.FirstOrDefault().SomeModelProperty)
che voglio evitare.
http://msdn.microsoft.com/en-us/library/hh833697(v=vs.108).aspx
Tuttavia, non riesco a capire come ottenere questo al lavoro quando il mio modello non è IEnumerable, ma invece contiene IEnumerable come una proprietà, come ad esempio:
public class SomeList
{
public List<SomeModel> SomeModels { get; set; }
public int Page { get; set; }
public DateTime CurrentAsOf { get; set; }
}
ero sperando di essere esplicito con i parametri di tipo generico, ma penso che i parametri di tipo siano specificati dal motore che scorre verso il basso dall'HtmlHelper creato con la pagina. Posso dichiarare un nuovo HtmlHelper nella pagina o in qualche modo specificare esplicitamente i parametri del tipo?
Index.cshtml:
@model SomeList
//No idea how to do this:
@Html.DisplayNameFor<IEnumerable<SomeModel>>(m => m.SomeModelProperty)
Nel codice del ciclo nel file Razor, è possibile controllare se è il ** primo ** elemento nel ciclo e generare la sezione '' utilizzando le chiamate 'DisplayNameFor'. Questo 'if' sarebbe prima della parte in cui si producono i dati in un' tr'. – Gromer
+1
+0
A
38
+4
+1
+1
5
Problemi correlati
-
1. Calling sovraccarico costruttore quando entrambi sovraccarichi sono stessa firma
-
2. Delphi - Calling Win API
-
3. Calling PowerShell da C#
-
4. Calling awakeFromNib della superclasse
-
5. Calling Py_Finalize() da C
-
6. Calling Javascript utilizzando UIWebView
-
7. Come si accede al DisplayNameFor in un modello nidificato
-
8. Calling callback con Mockito
-
9. Utilizzo sovraccarico del rendimento restituito
-
10. Flatten IEnumerable <IEnumerable <>>; comprensione generici
-
11. Calling costruttore di base in C#
-
12. Calling Environment.Exit() all'interno di un blocco Utilizzando
-
13. C# Calling Base Class Constructor
-
14. Calling funzioni C all'interno javascript
-
15. Calling accetta() da più thread
-
16. Django ModelForm not calling clean
-
17. Calling obiettivi Maven da Java
-
18. Calling più metodi in Java
-
19. Calling due funzioni javascripts onclick
-
20. Rails - Calling CoffeeScript da JavaScript
-
21. numpy calling sse2 via ctypes
-
22. Android ActivityRecognition not calling onHandleIntent
-
23. Calling Stata funzioni da R
-
24. Enumerazione multipla di IEnumerable
-
25. Sovraccarico di Math.sqrt: metodo di sovraccarico sembra nascondere l'originale
-
26. IEnumerable Select
-
27. Calling servizio HTTP esterno utilizzando HttpClient da un'azione Web API
-
28. Sovraccarico di static_cast?
-
29. F #: funzioni di sovraccarico
-
30. Risoluzione di sovraccarico
Ultima domanda
-
1. Come devo usare @types con dattiloscritto 2
-
2. In che modo RabbitMQ archivia effettivamente il messaggio fisicamente?
-
3. Dimensioni di passaggio ottimali della matrice di dimensioni fisse in julia
-
4. Come impedire a Pandas di convertire i miei numeri interi in float quando unisco due dataFrames?
-
5. Problemi nel localizzare le porte seriali utilizzando Bash su Windows 10
-
6. formGroup aspetta un'istanza FormGroup
-
7. come ottenere i registri per le attività del servizio docker nello stato di "preparazione"
-
8. SimpleTaskConfiguration di Spring Cloud Task e SimpleBatchConfiguration del batch di primavera che impedisce la configurazione automatica di avvio a molla delle transazioni XA
-
9. Test Espresso bloccato/inattivo dopo l'esecuzione (clic()) sul pulsante in ViewAnimator
-
10. Objc PromiseKit: aggiungi nuove promesse dall'interno di una promessa
-
1. Calling sovraccarico costruttore quando entrambi sovraccarichi sono stessa firma
-
2. Delphi - Calling Win API
-
3. Calling PowerShell da C#
-
4. Calling awakeFromNib della superclasse
-
5. Calling Py_Finalize() da C
-
6. Calling Javascript utilizzando UIWebView
-
7. Come si accede al DisplayNameFor in un modello nidificato
-
8. Calling callback con Mockito
-
9. Utilizzo sovraccarico del rendimento restituito
-
10. Flatten IEnumerable <IEnumerable <>>; comprensione generici
Sì, ho utilizzato questi tipi di soluzioni alternative sperando di passare da quello ora che DisplayNameFor supporta l'acquisizione dei metadati da IEnumerable – AaronLS
Questa domanda ha una soluzione valida e funzionante (risposta accettata): http://stackoverflow.com/questions/20807869/displaynamefor-from-listobject-in-model – lxa
risposta
Un'altra soluzione simile che funziona anche se non ci sono righe potrebbero essere:
fonte
2012-12-08 18:10:13 franz
La chiamata è ambigua tra i seguenti metodi o proprietà: 'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor (System.Web.Mvc. HtmlHelper >, System.Linq.Expressions.Expression >) 'and' System.Web.Mvc.Html .DisplayNameExtensions.DisplayNameFor , int> ... –
stesso problema come Oleg Sh ... –
Qualcuno è riuscito a risolvere questo problema? – user3407039
Ho esattamente lo stesso problema perché sto usando ViewModels così ho un ViewModel con un IEnumerable di oggetti reali come proprietà.
Mi sono imbattuto in questo post in cui se si verifica la risposta il ragazzo ha creato il proprio HTMLHelper per risolvere questo problema http://forums.asp.net/t/1783733.aspx. La sua versione è:
Devi passare due argomenti enumerazione e di espressione, piuttosto che il normale solo espressione così si può preferire risposta @franz. Non riesco a vedere che sia comunque necessario passare 2 argomenti poiché è necessario conoscere la proprietà del modello di vista a cui si sta applicando l'espressione.
fonte
2013-11-18 11:49:05
Problemi correlati