如何处理由IEnumerable方法返回的数据

时间:2018-11-20 05:04:52

标签: c# asp.net-core dependency-injection entity-framework-core

我正在尝试创建一个简单的视图(分页,排序和过滤)。 我有的方法看起来像这样:

public IEnumerable<VehicleMakeEntity> GetMake(int index, int count, 
                                      Expression<Func<VehicleMakeEntity, int>> orderLambda)
{
    var data = _makeRepository.SelectListMake(index, count, orderLambda).AsQueryable();
    return data;
}

您看到它从存储库中调用了另一个方法,该方法看起来相同

private readonly IQueryable<VehicleMakeEntity> _source;

public MakeRepository(ProjectDbContext context)
{
    this.context = context;
    _source = this.context.VehicleMake;
}

public IEnumerable<VehicleMakeEntity> SelectListMake(int index, int count, 
                                      Expression<Func<VehicleMakeEntity, int>> orderLambda)
{
    return _source.Skip(index * count).Take(count).OrderBy(orderLambda);
}

在控制器中,我调用了方法

public IActionResult Make()
{
    var data = _vehicleService.GetMake(1, 10, (p => p.Id));

    return View(data);
}

它返回一些我不知道如何使用的数据,如此处

我还基于该控制器方法生成了一个视图,一个基本的列表视图,您可以在此处查看

@model IEnumerable<Data.Entities.VehicleMakeEntity>
@using NonFactors.Mvc.Grid;
@{
ViewData["Title"] = "Make View";
}
<h2>Make View</h2>

<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Id)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Abrv)
        </th>
        <th></th>
    </tr>
</thead>
<tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Id)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Abrv)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
            </td>
        </tr>
    }
</tbody>

但是网站上没有任何显示。我应该对返回的数据做些什么?我究竟做错了什么?我检查了实体是否不是从数据库中获取信息,而是。

1 个答案:

答案 0 :(得分:0)

可以检查以下代码吗?

public IActionResult Make()
    {
        var data = _vehicleService.GetMake(1, 10, (p => p.Id)).ToList();

        return View(data);
    }

也尝试删除AsQueryable()

public IEnumerable<VehicleMakeEntity> GetMake(int index, int count, Expression<Func<VehicleMakeEntity, int>> orderLambda)
    {
        return _makeRepository.SelectListMake(index, count, orderLambda);
    }