【发布时间】:2015-08-28 05:23:40
【问题描述】:
我正在创建 MVC 5 应用程序,在此应用程序中,我使用一个 var 模型加入多个数据表,并将该值绑定到“DiscussionPreview_Model”模型以列出数据
这是控制器类
public ActionResult Discussion_Preview()
{
int Discussion_ID = 1;
var discussion_preview = (from d in db.AB_Discussion
where d.Discussion_ID == Discussion_ID
join dc in db.AB_DiscussionComments on d.Discussion_ID equals dc.Discussion_ID
join user_discussion in db.AspNetUsers on d.CreatedBy equals user_discussion.Id
join user_comments in db.AspNetUsers on dc.CreatedBy equals user_comments.Id
select new DiscussionPreview_Model
{
Disussion_ID = d.Discussion_ID,
Discussion_CreateDate = d.CreatedDate,
Discussion_CreateBy = user_discussion.UserName,
Discussion_Title = d.Discussion_Name,
Discussion_Description = d.Discription,
Comment_ID = dc.Comment_ID,
Comment_Description = dc.Comment_Discription,
Comment_CreateDate = dc.CreatedDate,
Comment_CreateBy = user_comments.UserName
});
return View(discussion_preview);
}
这是我的“DiscussionPreview_Model”模型类
public class DiscussionPreview_Model
{
DiscussionVM model1;
CommentVM model2;
}
public partial class DiscussionVM
{
public int Disussion_ID { get; set; }
public Nullable<System.DateTime> Discussion_CreateDate { get; set; }
public string Discussion_CreateBy { get; set; }
public string Discussion_Title { get; set; }
public string Discussion_Description { get; set; }
public IEnumerable<CommentVM> Comments { get; set; }
}
public partial class CommentVM
{
public int Comment_ID { get; set; }
public Nullable<System.DateTime> Comment_CreateDate { get; set; }
public string Comment_CreateBy { get; set; }
public string Comment_Description { get; set; }
}
这是查看页面
@model IEnumerable<prjkt.Models.DiscussionPreview_Model>
@{
ViewBag.Title = "Discussion_Preview";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@foreach (var discussion in Model.DiscussionVM)
{
<h3>>@discussion.Discussion_Title</h3>
<div>@discussion.Discussion_Description</div>
<div>@discussion.Discussion_CreateDate</div>
}
@foreach (var item in Model.CommentVM)
{
<fieldset>
<legend></legend>
<h4>Comments</h4>
<div class="display-field">@item.Comment_Description</div>
<div class="display-field">@item.Comment_CreateBy : @item.Comment_CreateDate </div>
</fieldset>
}
但这不能正常工作,我试图通过多种方式克服这个问题
真的很感激可以建议一个强大的linq查询方法
【问题讨论】:
-
你上一个问题没有看我的cmets吗?
DiscussionVM已包含其 cmets 的属性。您需要初始化一个DiscussionVM,从AB_Discussion表中填充其一般属性(Name、Description等),然后从AB_DiscussionComments表中填充其cmets 集合。 -
不能正常工作是什么意思?你能告诉我你所面临的具体问题吗?
-
@Chathz,我稍后会看一下,但从视图模型的
var discussion = db.db.AB_Discussion.Where(d => d.Discussion_ID == Discussion_ID).FirstOrDefault(); and populate theTitle,Description` 等属性开始。然后var comments = db.AB_DiscussionComments.Where(c => c.Discussion_ID == Discussion_ID);并使用它来填充Comments属性(将其分解为步骤,直到您了解自己在做什么) -
model.Comments = comments.Select(c => new CommentVM(){ Comment_ID = c.Comment_ID, Comment_Description = c.Comment_Description , ....etc}; -
我已经更新了DotNetFiddle,希望能给你一个更好的理解
标签: c# linq asp.net-mvc-3 asp.net-mvc-4 razor