从列表<字符串>值填充下拉列表
本文关键字:填充 下拉列表 字符串 列表 | 更新日期: 2023-09-27 18:36:00
我正在尝试从 viewbag 填充下拉列表,并且视图包是从列表中填充的。我遇到了一些问题。有人可以让我知道我错过了什么吗
C# 代码:
public ActionResult ColumnMapping()
{
DataTable dt = new DataTable();
if (Session["datatable"] != null)
{
dt = ((DataTable)Session["datatable"]);
ViewBag.ColumnMapping = dt;
List<string> ddlcolumnmapping = columnmappingddl();
ViewBag.ddlcolmapping = ddlcolumnmapping;
}
return View(dt);
}
.cshtml 文件:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Column Mapping</title>
</head>
<body>
<div>Column Mapping:</div>
@if (ViewBag.ColumnMapping != null)
{
foreach (System.Data.DataColumn col in Model.Columns)
{
@col.Caption
@Html.DropDownList("", new SelectList(ViewBag.ddlcolmapping))
@*foreach (System.Data.DataRow row in Model.Rows)
{
@Html.Raw(col.Caption + " " + row[col].ToString() + "<br/>")
}*@
}
}
</body>
</html>
您不能只从List<string>
创建选择列表。它需要一个IEnumerable<SelectListItem>
或者你需要一个类实例的列表,然后你可以在其中传递属性名称以用于Value
和Text
。因此,您在这里的唯一选择是使用 LINQ 将字符串列表选择到 SelectListItem
中:
var options = ddlcolumnmapping.Select(m => new SelectListItem
{
Value = m,
Text = m
});
现在,您可以将options
传递到您的下拉菜单,一切都是金色的。另外,您不需要创建SelectList
的实际实例,实际上,最好不要这样做。例如,如果使用此options
变量的值设置ViewBag.options
,则在视图中:
@Html.DropDownList("", (IEnumerable<SelectListItem>)ViewBag.options)