【发布时间】:2016-11-22 04:29:07
【问题描述】:
我有一个视图模型:
public class CourseViewModel
{
public int CourseID { get; set; }
public string Title { get; set; }
public string page_title { get; set; }
public string titleabbrev { get; set; }
public string Meta { get; set; }
public string intro_1 { get; set; }
public string intro_2 { get; set; }
public string intro_3 { get; set; }
public IEnumerable<course_section> Course_section { get; set; }
public IEnumerable<course_subsection> Course_subsection { get; set; }
public Enrollment Enrollments { get; set; }
}
在我的控制器中,我有以下内容:
var allcourse = db.Course_page
.Where(i => i.titleabbrev == courseabbrev)
.Include(i => i.course_sections.Select(c => c.course_subsections))
.Include(i => i.enrollments);
var viewModel = new CourseViewModel();
viewModel.CourseID = allcourse.Single().CourseID;
viewModel.page_title = allcourse.Single().page_title;
viewModel.titleabbrev = allcourse.Single().titleabbrev;
viewModel.Title = allcourse.Single().Title;
viewModel.intro_1 = allcourse.Single().intro_1;
viewModel.intro_2 = allcourse.Single().intro_2;
viewModel.intro_3 = allcourse.Single().intro_3;
viewModel.Course_section = allcourse
.Single().course_sections
.OrderBy(i => i.Order);
viewModel.Course_subsection = viewModel.Course_section
.SelectMany(c => c.course_subsections)
.Where(i => i.Titleabbrev == sectionabbrev)
.OrderBy(i => i.Order);
return View(viewModel);
我想发送到视图 viewmodel.enrollments,但是我在这样做时遇到了问题,因为我只想将单个注册记录发送到 viewmodel 中的视图,并且在 course_page 模型中注册是 IEnumerable。
当我创建“allcourse”时,大概我应该只获取单个注册记录,但是无论我尝试什么,我似乎都无法做到这一点,然后将其返回到视图中。例如,我尝试过:
var allcourse = db.Course_page
.Where(i => i.titleabbrev == courseabbrev)
.Where(b => b.enrollments.Single().UserID == User.Identity.GetUserId())
.Include(i => i.course_sections.Select(c => c.course_subsections))
.Include(i => i.enrollments);
将视图模型发送到仅包含与当前登录的用户 ID 匹配的注册记录的视图的最佳方式是什么?
编辑 - 我也尝试过:
var allcourse = db.Course_page
.Where(i => i.titleabbrev == courseabbrev)
Where(i => i.Enrollments.Any(b => b.UserID == User.Identity.GetUserId())
.Include(i => i.course_sections.Select(c => c.course_subsections))
.Include(i => i.enrollments);
在 linqpad 中对此进行测试会返回用户 ID 不匹配的注册记录。
谢谢
【问题讨论】:
标签: c# asp.net-mvc entity-framework linq asp.net-mvc-4