没有列表项的MVC列表框
本文关键字:列表 MVC | 更新日期: 2023-09-27 18:18:56
我试图显示2个列表框一个与所有可能的选择&其他列表框将在用户选择时填充,但由于某些原因,我不能添加一个空列表框。
代码如下:
@Html.ListBox("somename")
,我的错误是:没有'IEnumerable'类型的ViewData项具有'somename'键。
如果我用以下代码替换上面的代码行,那么它可以正常工作,但我想要一个空的列表框:
@Html.ListBox("somename", liMyList)
其中liMyList为SelectListItem。
是否有可能在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="-->>" name="Action"/>
<input type="submit" class="btn" value="-->" name="Action"/>
<input type="submit" class="btn" value="<--" name="Action"/>
<input type="submit" class="btn" value="<<--" name="Action"/>
</div>
<div class="col-sm-3">
@Html.ListBoxFor(m => m.DestinationList, Model.DestinationList, new {size = 10})
</div>
</div>
<!-- Some HTML/Razor Markup -->
对于视图,您可能需要使用标记来满足您的目的。