在foreach循环中IQueryable已更改,未在视图中显示

时间:2018-04-30 05:22:17

标签: asp.net-mvc linq gridview foreach iqueryable

我一直试图改变SHead的值,如果它等于  query但我检查了运行时间,public ViewResult Index() { IQueryable<ServiceRequestViewModel> query; query = from c in context.ServiceRequests select new ServiceRequestViewModel { ServiceRequestId = c.ServiceRequestId, ServiceDescription = c.ServiceDescription, RequestNumber = c.RequestNumber, Title = c.Title, RouteAttr = c.RouteAttr, LogAttr = c.LogAttr }; foreach (var item in query) { if (item.RouteAttr.RoutedForRole == WorkflowRole.SHead) { item.RouteAttr.RoutedForRole = WorkflowRole.HRManager; } } return View(query); } 没有更改,即使它进入foreach循环并且有有效条目。我也尝试在视图中添加foreach循环,但它没有改变任何东西。

@Html.Grid(Model).Columns(col =>
{
    col.Add(o => o.ServiceRequestId)
        .Encoded(false)
        .Sanitized(false)
        .Filterable(true)
        .Titled("SRF No.")
        .SetWidth(150)
        .RenderValueAs(o => Html.ActionLink(o.RequestNumber, "Details", new { id = o.ServiceRequestId }));
    col.Add(o => o.Title)
        .Filterable(true)
        .SetWidth(400)
        .Titled("Title");
    col.Add(o => o.LogAttr.CreatedBy)
        .Filterable(true)
        .Titled("Requestor");
    col.Add(o => o.RouteAttr.RoutedForRole)
            .Filterable(true)
            .Titled("Status");
}).WithPaging(10).Sortable(true)

以下是我的网格视图。

iqueryable

我在评论中被告知为什么它没有返回所以现在我想知道如何更新{{1}}中的项目并将其返回到视图中。

1 个答案:

答案 0 :(得分:1)

就像@Enigmativity在评论中所说的那样,我将查询更改为数组。

var data = query.ToArray();

他建议我返回data但由于ServiceRequestViewModel需要IQueryable类型,因此无效。所以我将其更改回IQueryable类型,以便我可以将其返回查看。

var queryable = data.AsQueryable();