2010-11-19 8 views
0

ドロップダウンリストをASCXに入力したいと思います。 これを行うには、私はLINQクエリを使用して、結果をviewModelに入力します。 ビューからはドロップダウンを生成できますが、ASCXからは表示されません! これがうまくいかない理由がありますか? ASCXのビューでのcontrolerでDropDownListをASCXコントロールに埋め込む

コード:-)事前による

感謝の

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

コード

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

コード

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

ビューではModel.evaluationTypesを使用しますが、ASCXではViewData ["EvaluationTypes"]を使用します。 ViewData ["EvaluationTypes"]に記入しましたか? –

+0

@Pavel、はい、彼は 'EditorFor'ヘルパーの第2引数として渡しています。 –

答えて

3

私は強くエディタテンプレートを入力してViewDataを放棄使用して、あなたをお勧めします。「あなたの後

:UPDATEを

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

を:

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

とEditorTemplateでのあなたの例外スタックトレースを投稿しました。私は問題を発見しました:

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

SelectListViewData["EvaluationTypes"]にキャストする必要があります。これは、私が最初の答えで示唆したように、強く型付けされたヘルパーを使うことによって、それらの醜いキャストを避けるべきだと言われています。

+0

hm、実際に<%= ViewData ["EvaluationTypes"]%>部分的に "System.Web.Mvc.SelectList"を表示すると、データが部分的に渡されていることを示していますか? – eka808

+0

@ eka808、あなたは正しいです。私はあなたのコードを誤解しました。 –

+0

だから、あなたはこれの問題のアイデアを持っていますか? :-S – eka808

関連する問題