我正在尝试显示2个列表框,其中包含所有可能的选项&其他将填充用户选择他们的选择但由于某种原因我不能添加一个空的列表框。
以下是代码:
@Html.ListBox("somename")
&安培;我的错误是: 没有类型为'IEnumerable'的ViewData项具有键'somename'。
我用以下内容替换上面的代码行然后它工作正常但我想要一个空的列表框:
@Html.ListBox("somename", liMyList)
其中liMyList是SelectListItem。
是否可以在MVC中使用空列表框?请帮忙
答案 0 :(得分:8)
一个选项只是纯HTML:
<select name="somename" multiple="multiple">
</select>
另一个是提供一个空的项目清单:
@Html.ListBox("somename", new List<SelectListItem>())
答案 1 :(得分:0)
我意识到这是一个较老的问题,但我解决这个问题的方法是在我的视图模型中有2个IEnumerable成员(我的模型使用List&lt;&gt;)。第一个成员是可供选择的列表,第二个成员是选择的接收者,在两个框之间有按钮来管理移动所选项目。
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 -->
对于视图,您可能需要使用标记来满足您的目的。