无法显示ViewBag中的数据

时间:2017-12-05 08:53:08

标签: c# asp.net sql-server asp.net-mvc-4

我的数据库中有一个表,我想获取名称字段而不重复。 但是我得到了这个错误:

'string'不包含'ID'的定义。 当我调试我的代码时,我发现变量已经满了数据,直到错误显示出来。

在我的控制器中:

public ActionResult Create()
{
            HREntities db = new HREntities();
            var areas = db.Area.Select(area => area.Area + area.ID).Distinct().ToList();
            if(areas != null)
                ViewBag.areas = areas;

            return View();
}

视图的代码:

 @foreach (var area in ViewBag.areas)
{
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12">
        <input name="group4" type="radio" id="@area.ID" class="radio-col-blue-grey" />
        <label for="@area.ID">@area.Area</label>
    </div>
}

2 个答案:

答案 0 :(得分:1)

在控制器的Create方法中,您将在以下行中创建List<string>

var areas = db.Area.Select(area => area.Area + area.ID).Distinct().ToList();

然后将此列表传递给ViewBag,但由于它现在是一个字符串列表而不是List<Area>,因此它不会有ID属性。

在调试时,检查变量areas的类型,你会看到。 foreach循环中的标记代码应如下所示:

<input name="group4" type="radio" id="@area" class="radio-col-blue-grey" />
<label for="@area">@area</label>

答案 1 :(得分:1)

您的.Select()查询正在返回IEnumerable<string>,而不是Area个对象的集合(并且string没有名为Id的属性

根据您的查询,您的观看代码应该只是

@foreach (var area in ViewBag.areas)
{
    <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12">
        <input name="group4" type="radio" id="@area" class="radio-col-blue-grey" />
        <label for="@area">@area</label>
    </div>
}

另类,您需要返回模型的集合