Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于viewbag中的值显示一组复选框_C#_Asp.net Mvc - Fatal编程技术网

C# 基于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。以下是我已经拥有的:

在控制器中:

 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”的定义。