填充DropDownListFor()之前的上下文处理错误

时间:2014-04-26 12:29:21

标签: linq entity-framework razor asp.net-mvc-5 html.dropdownlistfor

我一直试图让DropDownList工作:

我的控制器代码如下:

    public ActionResult Register()
{
    var teams = new List<Team>();
    using (var context = new TouristContext())
    {
        teams = (from x in context.Teams select x).ToList();
    }

    var model = new RegisterViewModel()
    {
        Teams = new SelectList(teams, "Value", "Text")
    };

    return View(model);
}

我的DropDownListFor()代码如下:

<div class="form-group">
    @Html.LabelFor(m => m.Teams, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownListFor(m => m.SelectedTeamId, Model.Teams, "Value", "Text")
    </div>
</div>

当我尝试访问该页面时,我收到错误:

  

由于已经处理了DbContext,因此无法完成操作。

我理解错误,但我不知道如何克服它。

1 个答案:

答案 0 :(得分:0)

事实证明它失败的原因是因为我没有任何名为ValueText的内容!

我的属性为IdName,因此我将代码更改为:

public ActionResult Register()
{
    var teams = new List<Team>();
    using (var context = new TouristContext())
    {
        teams = (from x in context.Teams select x).ToList();
    }

    var model = new RegisterViewModel()
    {
        Teams = new SelectList(teams, "Id", "Name")
    };

    return View(model);
}

现在一切正常。