Заполнить DropDownList в элемент управления ASCX - PullRequest
0 голосов
/ 19 ноября 2010

Я хочу заполнить выпадающий список в ASCX. Для этого в контроллере я использую запрос LINQ и заполняю результат в viewModel. Создайте выпадающий список в порядке с точки зрения, но не из 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) %>

Код в ASCX

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

1 Ответ

3 голосов
/ 19 ноября 2010

Я бы предложил вам использовать строго типизированный шаблон редактора и отказаться от ViewData:

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

и в шаблоне Editor:

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

ОБНОВЛЕНИЕ:

После того, как вы опубликовали трассировку стека исключений, я обнаружил проблему:

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

Вам необходимо привести к SelectList вашему ViewData["EvaluationTypes"].При этом следует избегать этих уродливых бросков, используя строго типизированных помощников, как я и предлагал в своем первоначальном ответе.

...