0

这里是我的动作代码改变字段的值不会生效

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总是被设置为零和价值在froeach循环中设置的值不会更改usageCount的值。提前感谢任何帮助。

+0

看起来像你有一些错字,'item.usageHistory'应该是'item.usageCount'? –

+0

这是输入错误。我编辑了这个问题。 – Beginner

回答

0

你的问题是你没有注意到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...,你应该考虑到这一点来相应地修改你的代码。