0

我看了一下这个,但对于我想要实现的目标来说太复杂了: 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; }
}

和实体.用户:

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; }
 }

我怎样才能通过 foreach 来(int moduleId in user.UserScormModules)获取name模块的而不是id. 我想将名称传递给我的视图

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

1 回答 1

0

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

foreach (var row in user.UserScormModules)
{ 
   int moduleId = row.UserScormModuleId;
   var name = scormModule.GetScormModuleTitle(moduleId);    
   viewModel.TrainingModuleName.Add(name); 
 } 
于 2012-11-14T12:34:42.557 回答