2010-11-19 4 views
0

Je veux remplir une liste déroulante dans un ASCX. Pour ce faire, dans le contrôleur j'utilise une requête LINQ et remplis le résultat dans un viewModel. Générer la liste déroulante est ok de la vue mais pas de l'ASCX! Avez-vous une idée de pourquoi cela ne fonctionne pas?Remplir un DropDownList dans un contrôle ASCX

Merci de par avance :-)

code dans controleur

var query = from foo in session.Linq<PROJECT.Models.bar>() select foo; 
PROJECT.ViewModels.myviewmodel viewModel = new PROJECT.ViewModels.myviewmodel(); 
viewModel.data = new SelectList(query, "Id", "title"); 
return View(viewModel); 

code en vue

<h2>Create</h2> 
<%= Html.EditorFor(a => a.evaluation, new { EvaluationTypes = Model.evaluationTypes })%>    
<!-- Generate from here is ok --> 
<%: Html.DropDownList("foo",Model.evaluationTypes) %> 

code dans ASCX

<%= ViewData["EvaluationTypes"] %>  
<%: Html.DropDownList("foo", ViewData["EvaluationTypes"])%> 
+0

Dans cette vue, vous utilisez Model.evaluationTypes, mais dans ASCX, vous utilisez ViewData ["EvaluationTypes"]. Avez-vous rempli ViewData ["EvaluationTypes"]? –

+0

@Pavel, oui il le passe comme second argument de l'assistant 'EditorFor'. –

Répondre

3

Je vous suggère d'utiliser un éditeur de modèle fortement typé et abandonneront ViewData:

<%: Html.EditorFor(x => x.evaluation) %> 

et dans le EditorTemplate:

<%: Html.DropDownListFor(x => x.foo, Model.evaluationTypes) %> 

MISE À JOUR:

Une fois que vous » J'ai posté votre trace de pile d'exception J'ai repéré le problème:

<%: Html.DropDownList("foo", (SelectList)ViewData["EvaluationTypes"])%> 

Vous devez jeter à SelectList votre ViewData["EvaluationTypes"]. Cela étant dit, ces moulages laids devraient être évités en utilisant des aides fortement typés comme je l'ai suggéré dans ma réponse initiale.

+0

hm, en fait faire un <% = ViewData ["EvaluationTypes"]%> dans le show partiel me "System.Web.Mvc.SelectList", est-ce que cela indique que les données sont passées à la partielle? – eka808

+0

@ eka808, vous avez raison. J'ai mal lu votre code. –

+0

Alors, avez-vous une idée de la question? : -S – eka808

Questions connexes