从列表<字符串>值填充下拉列表

本文关键字:填充 下拉列表 字符串 列表 | 更新日期: 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>或者你需要一个类实例的列表,然后你可以在其中传递属性名称以用于ValueText。因此,您在这里的唯一选择是使用 LINQ 将字符串列表选择到 SelectListItem 中:

var options = ddlcolumnmapping.Select(m => new SelectListItem
{
    Value = m,
    Text = m
});

现在,您可以将options传递到您的下拉菜单,一切都是金色的。另外,您不需要创建SelectList的实际实例,实际上,最好不要这样做。例如,如果使用此options变量的值设置ViewBag.options,则在视图中:

@Html.DropDownList("", (IEnumerable<SelectListItem>)ViewBag.options)