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