2011-10-26 13 views
6

Sospetto che sia semplice e mi manca.MVC 3 - visualizza valore dal dizionario in vista

Ho un modello di vista che ha un dizionario come una delle sue proprietà. Questo dizionario serve per compilare una selezione HTML con la categoria quando sto modificando un record. C'è anche una proprietà per indicare il CategoryID selezionato. Tuttavia, quando visualizzo il record, desidero visualizzare il valore della coppia chiave/valore che corrisponde al CategoryID.

mio punto di vista il modello:

public class ItemEditVM 
{ 
    public int ItemID { get; set; } 
    public int? CategoryID { get; set; } 
    public string ItemDesc { get; set; } 
    public Dictionary<int, string> CategorySelect { get; set; } 
} 

Ho provato qualcosa di simile ma ho i parametri della funzione di sbagliato:

@Html.DisplayFor(model => model.CategorySelect.TryGetValue(model.CategoryID, out val)) 

Ho anche provato questo che non riesce con nessuna specifica messaggio di errore:

@Html.DisplayFor(model => model.CategorySelect.SingleOrDefault(c=> int.Parse(c.Value) == model.CategoryID).Value) 

Come posso fare questo?

Molte grazie

la risposta corretta (grazie a Mystere Man)

@Html.DisplayFor(model=>model.CategorySelect[Model.CategoryID.Value]) 
+0

Una nota rapida: non ho progettato questo database e nella tabella degli articoli il CategoryID è un FK ma può anche accettare valori null. Non sapevo che potessi farlo. Ad ogni modo, per non violare l'FK, in realtà il CategoryID sarà sempre popolato. – BKahuna

+0

Naturalmente gli FK possono essere nulli. I PK non possono essere nulli. Un FK null significa solo che non c'è alcuna relazione. –

risposta

7

Hai provato:

@Model.CategorySelect[Model.CategoryID.Value] 

Dal momento che come dici tu, IDCategoria non ci sarà nulla, poi questo non dovrebbe essere un problema .. a meno che non possa essere nullo, nel qual caso è necessario fare qualche convalida.

+0

In realtà ho fatto e mi dà un errore di sovraccarico (alcuni argomenti non validi) – BKahuna

+0

@BKahuna - Questo non dovrebbe essere, c'è solo un argomento per un indicizzatore del dizionario, che è il valore. Hai inserito il valore .Value? Ti sei assicurato di usare MAIUSCOLO sul modello? –

+0

No, l'ho dimenticato. Perché ho bisogno del valore? Ho pubblicato la risposta corretta sopra nella mia domanda originale. @Mystere - grazie per l'aiuto! – BKahuna

6
@foreach(var keyValue in Model.CategorySelect.keys) 
{ 
    foreach(var cat in @Model.CategorySelect[keyValue] 
    { 
     <p>@cat</p> <!--whatever html you fancy--> 
    } 
} 
+0

Volevo solo darti un modo diverso. – hidden

Problemi correlati