在Mvc View中查询获取查询的错误结果不能多​​次枚举

时间:2015-02-25 17:06:32

标签: asp.net-mvc asp.net-mvc-5

在我看来,我已经通过了一个模型,为什么我得到了 错误

  

查询结果不能多​​次枚举

任何人都可以帮助我。

这是我的观点

@model App.ViewModels.ViewTeamList
<div class="row">
        <div class="col-md-12 col-sm-12">
            @if (Model.TeamList.Count() > 0)
            {

                <div class="table-responsive">
                    @{
                var grid = new WebGrid(source: Model.TeamList.ToList(), defaultSort: "TeamName", canPage: true, rowsPerPage: 10);
                    }
                    @grid.WebGridSelectAll(

                            headerStyle: "gridHeader",
                            tableStyle: "table table-condensed table-striped table-bordered table-hover no-margin",
                            checkBoxValue: "TeamId",
                            columns: new[]{
                                grid.Column("TeamName",format: @<a href="#" class="details" data-id="@item.TeamId">@item.TeamName</a>,header: Html.CustomText("lblCTTeamName", "Team Name")),
                                grid.Column("Description",format: @<a href="#" class="details" data-id="@item.TeamId">@item.Description</a>, header: Html.CustomText("lblDescription", "Description"), canSort: false),
                                grid.Column("UserCount",format: @<a href="#" class="details" data-id="@item.TeamId">@item.UserCount</a>, header: Html.CustomText("lblCTUserCount", "# of User(s)"))
                            }
                             )
                </div>
                }
          else
        {
        <div>No Record Found</div>
        }
        </div>
    </div>

视图模型

public class ViewTeamList
    {
        public IEnumerable<TeamList> TeamList;
        public Team Team { get; set; }
        [Required]
        public string SearchTeamName { get; set; }

    }

1 个答案:

答案 0 :(得分:4)

TeamListIEnumerable。可枚举与列表之类的不同之处在于其数据结构设置为从堆栈中弹出项目。一旦项目被弹出,它基本上被处理掉,这意味着你只能运行一次项目。

在这里,您通过调用.Count()来执行此操作。为了从可枚举中获取计数,必须迭代这些项,这有效地耗尽了枚举。然后,当您尝试通过WebGrid运行它时,您会收到该错误。您需要将TeamList强制转换为列表并存储结果:

@{ var teamList = Model.TeamList.ToList(); }
@if (teamList.Count() > 0)
{
    ...

或者,可能更好,只需更改视图模型上属性的类型:

public List<TeamList> TeamList { get; set; }