C# 基于viewbag中的值显示一组复选框
我面临一个问题。我需要显示一组复选框,其中的值来自控制器中的Viewbag。以下是我已经拥有的: 在控制器中:C# 基于viewbag中的值显示一组复选框,c#,asp.net-mvc,C#,Asp.net Mvc,我面临一个问题。我需要显示一组复选框,其中的值来自控制器中的Viewbag。以下是我已经拥有的: 在控制器中: ViewBag.disciplines = new SelectList(db.Disciplines, "IdDiscipline", "IntituleDiscipline"); 在我看来: <div class="form-group" id="checkboxes"> <label class="control-label col-md-2" fo
ViewBag.disciplines = new SelectList(db.Disciplines, "IdDiscipline", "IntituleDiscipline");
在我看来:
<div class="form-group" id="checkboxes">
<label class="control-label col-md-2" for="discipline"> Discipline : </label>
<div class="col-md-10">
@foreach (var item in ViewBag.disciplines)
{
<input type="checkbox"
value="@ViewBag.disciplines.IntituleDiscipline"
name="@ViewBag.disciplines.IntituleDiscipline"
id="@ViewBag.disciplines.IdDiscipline">
}
</div>
</div>
纪律:
@foreach(ViewBag.Disciplies中的变量项)
{
}
我希望能够显示复选框,其中值为“IntituleDiscipline”,id为“IdDiscipline”(这些id来自数据库)
当我执行此操作时,我会得到一个异常:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
''System.Web.Mvc.SelectList'不包含的定义
“IntituleDiscipline”
我能做些什么来获得结果呢?问题是您试图访问foreach中的整个集合,而不是迭代元素,替换@ViewBag.practices。。。使用@item
@foreach (var item in ViewBag.disciplines)
{
<input type="checkbox" value="@item.IntituleDiscipline" name="@item.IntituleDiscipline" id="@item.IdDiscipline">
}
@foreach(ViewBag.productions中的变量项)
{
}
在Microsoft的文档中查找SelectList的定义,查看它公开了哪些属性。你要的不是他们中的一个。我怀疑您想从selectlist中的一个项目中获取值。每个项目都将是SelectListItem。现在,您可以查找对象公开的属性,并选择所需的属性。在复选框中,您可能希望开始引用循环提供给您的特定项,而不是整个列表。SelectList
对于复选框列表没有任何意义。不要使用ViewBag
-使用视图模型。有关如何在mvc中实现复选框列表的示例,请参阅item
将不具有名为IntituleDiscipline或IdDiscipline的属性。这是一个SelectListItem
。它公开的属性列表记录在Microsoft docs中。感谢您的回复@Kellei,但显示的错误是相同的:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“”System.Web.Mvc.SelectList'不包含“IntituleScipline”的定义。