我想将下拉列表填入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"])%>
答案 0 :(得分:3)
我建议您使用强类型编辑器模板并放弃ViewData:
<%: Html.EditorFor(x => x.evaluation) %>
并在EditorTemplate:
<%: Html.DropDownListFor(x => x.foo, Model.evaluationTypes) %>
更新:
在您发布了异常堆栈跟踪后,我发现了问题:
<%: Html.DropDownList("foo", (SelectList)ViewData["EvaluationTypes"])%>
您需要投放到SelectList
ViewData["EvaluationTypes"]
。据说,正如我在初步答复中所建议的那样,应该使用强类型助手避免那些丑陋的演员。