【发布时间】: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