没有列表项的MVC列表框

本文关键字:列表 MVC | 更新日期: 2023-09-27 18:18:56

我试图显示2个列表框一个与所有可能的选择&其他列表框将在用户选择时填充,但由于某些原因,我不能添加一个空列表框。

代码如下:

@Html.ListBox("somename")

,我的错误是:没有'IEnumerable'类型的ViewData项具有'somename'键。

如果我用以下代码替换上面的代码行,那么它可以正常工作,但我想要一个空的列表框:

@Html.ListBox("somename", liMyList)

其中liMyList为SelectListItem。

是否有可能在MVC中有一个空列表框?请帮助

没有列表项的MVC列表框

一个选项是纯HTML:

<select name="somename" multiple="multiple">
</select>

另一种是提供一个空的项目列表:

@Html.ListBox("somename", new List<SelectListItem>())

我意识到这是一个老问题,但我解决这个问题的方法是在我的视图模型中有2个IEnumerable成员(我的模型使用List<>)。第一个成员是要选择的列表,第二个成员是选择的接收者,两个框之间有按钮来管理所选项目的移动。

public class DataViewModel
{
    // some other model members
    public List<SelectListItem> SourceList { get; set; }
    public List<SelectListItem> DestinationList { get; set; }
}

在我的控制器中,我只是为两个成员

创建了新的列表
DataViewModel vm = new DataviewModel() {
    SourceList = new List<SelectListItem>(),
    DestinationList= new List<SelectListItem>(),
    // Other initialization
}

然后我将从我正在使用的任何源填充源列表(在我的应用程序中,我正在从Active Directory检索用户列表)。如果您的应用程序允许显示当前选择以便删除它们,或者只是显示它们,那么您还可以填充目标列表。但是填充列表不是强制的。

然后,在我看来,我只是用适当的绑定添加了两个列表:
@model Application.WebApp.Models.DataViewModel
<!-- Some HTML/Razor Markup -->
<div class="form-group">
    <div class="col-sm-3">
        @Html.ListBoxFor(m => m.SourceList, Model.SourceList, new {size = 10})
    </div>
    <div class="col-sm-1">
        <input type="submit" class="btn" value="--&gt;&gt;" name="Action"/>
        <input type="submit" class="btn" value="--&gt;" name="Action"/>
        <input type="submit" class="btn" value="&lt;--" name="Action"/>
        <input type="submit" class="btn" value="&lt;&lt;--" name="Action"/>
    </div>
    <div class="col-sm-3">
        @Html.ListBoxFor(m => m.DestinationList, Model.DestinationList, new {size = 10})
    </div>
</div>
<!-- Some HTML/Razor Markup -->

对于视图,您可能需要使用标记来满足您的目的。