2010-11-19 24 views
0

Bir açılır listeyi bir ASCX'e doldurmak istiyorum. Bunu yapmak için, denetleyicide bir LINQ sorgusu kullanın ve sonucu bir viewModel'e doldurun. Açılır menüden görünüm tamam, ancak ASCX'den değil! Bunun neden çalışmadığına dair bir fikriniz var mı? .Ascx görünümde Kontrolcü içindeBir ASCX denetimine bir DropDownList doldurun

Kanunu :-) peşin tarafından

Teşekkür'ın

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); 

Kod

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

Kod

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

Model.evaluationTypes'ı kullanırsanız, ancak ASCX'te ViewData ["AssessTypes"] kullanırsınız. ViewData ["AssessTypes"] öğesini doldurdunuz mu? –

+0

@Pavel, evet, EditorFor'un yardımcılarının ikinci argümanı olarak geçiyor. –

cevap

3

kullanıyorum size öneririm bir kuvvetle Editör Şablon ve terk ViewData yazmış:

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

ve EditorTemplate içinde:

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

GÜNCELLEME: Önden

' ve istisna yığınının izini yayınladım Sorunu tespit ettim:

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

Sen SelectList senin ViewData["EvaluationTypes"] için döküm gerekir. Bu, çirkin atmaların, ilk cevabımda önerdiğim gibi, güçlü bir şekilde yazılan yardımcıları kullanarak kaçınılması gerektiğini söyledi.

+0

hm, aslında bir <% = ViewData ["EvaluationTypes"]%> kısmi bana "System.Web.Mvc.SelectList" göster, bu veriler kısmi aktarılıyor olduğunu gösteriyor? – eka808

+0

@ eka808, siz haklısınız. Kodunu yanlış okuyorum. –

+0

Peki, bunun hakkında bir fikrin var mı? : -S – eka808