Вот мой код действия
public class personnelViewModel{
public Guid PKPersonelID { get; set; }
public string name { get; set; }
public string family { get; set; }
public int usageCount { get; set; }
}
var model = from personnel in DB.RFH_Personnel select new personnelViewModel
{
PKPersonelID = personnel.PKPersonelID,
name = personnel.Name,
family = personel.Family
}
freach(var item in model)
item.usageCount = DB.RFH_Service.Count(d => d.FKPersonelID == item.PKPersonelID);
return View(model);
И это мой взгляд:
@model IEnumerable<RefahiWeb.Models.personnelViewModel>
@{
var grid = new WebGrid(source: Model, rowsPerPage: 15, canPage: true, canSort: true);
}
@grid.GetHtml(tableStyle: "table tablesorter table-bordered table-hover request-status",
mode: WebGridPagerModes.All,
columns: grid.Columns(
grid.Column("name", "name", canSort: false),
grid.Column("family", "family", canSort: false),
grid.Column("usageCount", "usageCount", canSort: false)
)
)
Проблема в том, что usageCount всегда установлено нулевое значение, а значение, установленное в каждом цикле, не меняет значение usageCount. Любая помощь приветствуется заранее.
1 ответ
Ваша проблема в том, что вы не заметили, что model
- это просто запрос . Когда вы в цикле просматриваете model
, все меняете, но при возврате вы просто повторно выполняете свой запрос, сохраненный в model
. Итак, чтобы исправить это, у вас есть как минимум 2 варианта:
Добавьте
ToList()
послеmodel
, и тогда все должно работать:var model = from personnel in DB.RFH_Personnel select new personnelViewModel { PKPersonelID = personnel.PKPersonelID, name = personnel.Name, family = personel.Family }.ToList();
Назначьте
usageCount
прямо в запросе следующим образом:var model = from personnel in DB.RFH_Personnel select new personnelViewModel { PKPersonelID = personnel.PKPersonelID, name = personnel.Name, family = personel.Family, usageCount = DB.RFH_Service.Count(d => d.FKPersonelID == personnel.PKPersonelID) };
ПРИМЕЧАНИЕ : я не знаю, что принимает ваш метод View
, но когда вы добавите ToList()
, ваша модель будет List...
, и вы должны принять это во внимание, чтобы измените свой код соответствующим образом.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.
item.usageHistory
должно бытьitem.usageCount
?