【问题标题】:foreach through ICollection issueforeach 通过 ICollection 问题
【发布时间】:2012-11-14 08:57:16
【问题描述】:

我看过这个,但对于我想要实现的目标来说太复杂了: how to iterate through an Icollection In MVC3 nhibernate

我的控制器中有:

   public ActionResult UserDetails(int id)
{
  var user = ZincService.GetUserForId(id);
  if (user == null || user.Customer.CustomerId != CurrentCustomer.CustomerId)
    return DataNotFound();

  ManageUserViewModel viewModel = new ManageUserViewModel();
  ScormModule scormModule = new ScormModule();

  viewModel.User = user;
  viewModel.IsLockedOut = MembershipService.IsUserLocked(user.Email);
  viewModel.IsActivated = user.DateTimeActivated.HasValue && MembershipService.IsUserApproved(user.Email);
  viewModel.IsArchived = user.IsArchived;
  viewModel.TrainingModulesForUser = user.UserScormModules;
  foreach (int moduleId in user.UserScormModules)
  {
    var name = scormModule.GetScormModuleTitle(moduleId);
    viewModel.TrainingModuleName.Add(name);
  }

  return View(viewModel);
}

然后是 ManageUserViewModel:

public class ManageUserViewModel
{
 public Entities.User User { get; set; }
 public bool IsLockedOut { get; set; }
 public bool IsActivated { get; set; }
 public bool IsArchived { get; set; }\
 public ICollection<Entities.Scorm.UserScormModule> TrainingModulesForUser { get; set; }
 public List<string> TrainingModuleName { get; set; }
}

和 Entity.User:

private ICollection<Entities.Scorm.UserScormModule> _userScormModules;
public virtual ICollection<Entities.Scorm.UserScormModule> UserScormModules
{
  get
  {
    if (_userScormModules == null)
      _userScormModules = new List<Entities.Scorm.UserScormModule>();
    return _userScormModules;
  }
  set
  {
    _userScormModules = value;
  }
}

和 Entities.Scorm.UserScormModule:

 public class UserScormModule
 {
   public virtual int UserScormModuleId { get; set; }
   public virtual int Users_UserId { get; set; }
   public virtual int TrainingModuleArtifactScormModules_TrainingModuleArtifactId { get; set; }
   public virtual TrainingModuleArtifactScormModule TrainingModuleArtifactScormModule { get; set; }
   public virtual User User { get; set; }
 }

我如何通过(int moduleId in user.UserScormModules) 进行foreach,这样我就可以获得模块的name 而不是id。我想将名称传递给我的视图

var name = scormModule.GetScormModuleTitle(moduleId);
viewModel.TrainingModuleName.Add(name);

【问题讨论】:

  • 我想我明白了,我将代码更改为:foreach (var row in user.UserScormModules) { int moduleId = row.UserScormModuleId; var name = scormModule.GetScormModuleTitle(moduleId); viewModel.TrainingModuleName.Add(name); }
  • 请将其转换为答案。

标签: asp.net-mvc-3 linq


【解决方案1】:

我想我明白了,我将代码更改为:

foreach (var row in user.UserScormModules)
{ 
   int moduleId = row.UserScormModuleId;
   var name = scormModule.GetScormModuleTitle(moduleId);    
   viewModel.TrainingModuleName.Add(name); 
 } 

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多