在我的应用程序中,我需要显示一些链接到显示行的下拉列表。
<table>
<% foreach (var item in Model) { %>
<td>
<%= Html.Encode(item.COMPETENCE_LIBELLE) %>
</td>
<td>
<%= Html.DropDownListFor(item.FK_NIVEAU_ID, (SelectList)ViewData["FK_Niveau"]%>
</td>
<% } %>
</table>
但是,我不知道为什么,我的ddlist的选定值永远不会显示...
我没有任何问题来显示单个ddlist的选定值,但是当它在循环中时......我不知道该怎么做......
有什么想法吗?
答案 0 :(得分:0)
如果您需要显示多个下拉列表,则可能需要调整视图模型。让我们举一个例子:
public class ItemsViewModel
{
public string Label { get; set; }
public string SelectedId { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
}
public class MyViewModel
{
public IEnumerable<ItemsViewModel> Items { get; set; }
}
然后有一个控制器动作来填充这个视图模型:
public ActionResult Index()
{
var model = new MyViewModel
{
Items = new[]
{
// TODO: fetch from your repository
new ItemsViewModel
{
Label = "label 1",
Values = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" }
}
},
new ItemsViewModel
{
Label = "label 2",
// Automatically preselect the second item in the ddl
SelectedId = "B",
Values = new[]
{
new SelectListItem { Value = "A", Text = "foo1" },
new SelectListItem { Value = "B", Text = "bar" }
}
},
}
}
return View(model);
}
然后有一个相应的强类型视图:
<table>
<thead>
<tr>
<th>Label</th>
<th>Values</th>
</tr>
</thead>
<tbody>
<%= Html.EditorFor(x => x.Items)
</tbody>
</table>
并在相应的编辑器模板(~/Views/Shared/EditorTemplates/ItemsViewModel.ascx
)中:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.ItemsViewModel>"
%>
<tr>
<td>
<%: Model.Label %>
</td>
<td>
<%= Html.DropDownListFor(
x => x.SelectedId,
new SelectList(Model.Items, "Values", "Text")
) %>
</td>
</tr>