C# 在mvc中将两个数据模型绑定到一个模型
我正在创建MVC5应用程序,在这个应用程序中,我使用一个var模型连接多个数据表,并将这些值绑定到“DiscussionPreview_model”模型以列出数据 这是控制器类C# 在mvc中将两个数据模型绑定到一个模型,c#,linq,asp.net-mvc-3,asp.net-mvc-4,razor,C#,Linq,Asp.net Mvc 3,Asp.net Mvc 4,Razor,我正在创建MVC5应用程序,在这个应用程序中,我使用一个var模型连接多个数据表,并将这些值绑定到“DiscussionPreview_model”模型以列出数据 这是控制器类 public ActionResult Discussion_Preview() { int Discussion_ID = 1; var discussion_preview = (from d in db.AB_Discussion
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);
}
这是我的“讨论预览模型”模型课
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; }
}
public class DiscussionPreview\u模型
{
讨论虚拟机模型1;
虚拟机模型2;
}
公共部分类讨论VM
{
公共int-disession_-ID{get;set;}
可为空的公共讨论\u CreateDate{get;set;}
公共字符串讨论\u CreateBy{get;set;}
公共字符串讨论\u标题{get;set;}
公共字符串讨论\u描述{get;set;}
公共IEnumerable注释{get;set;}
}
公共部分类
{
public int Comment_ID{get;set;}
公共可空注释_CreateDate{get;set;}
公共字符串注释_CreateBy{get;set;}
公共字符串注释\描述{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>
}
@model IEnumerable
@{
ViewBag.Title=“讨论\预览”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
@foreach(Model.DiscussionVM中的var讨论)
{
>@讨论
@讨论
@discussion.discussion\u CreateDate
}
@foreach(Model.CommentVM中的变量项)
{
评论
@item.Comment\u说明
@item.Comment\u CreateBy:@item.Comment\u CreateDate
}
但这是不正常工作,我试图克服这个问题,在许多方面
您可以建议一种强大的linq查询方法这在这里不起作用:
@foreach (var discussion in Model.DiscussionVM)
因为Model.DiscussionVM不是IEnumerable
尝试枚举模型并访问该集合中reach项的.DiscussionVM
@foreach (var item in Model)
{
<h3>@item.DiscussionVM.Discussion_Title</h3>
<div>@item.DiscussionVM.Discussion_Description</div>
<div>@item.DiscussionVM.Discussion_CreateDate</div>
}
@foreach(模型中的变量项)
{
@item.DiscussionVM.Discussion\u标题
@item.DiscussionVM.Discussion\u说明
@item.DiscussionVM.Discussion\u CreateDate
}
您没有阅读我对上一个问题的评论吗DiscussionVM
已包含其注释的属性。您需要初始化一个DiscussionVM
,从AB_DiscussionComments
表中填充其常规属性(Name
,Description
等),然后从AB_DiscussionComments
表中填充其注释集合。您认为工作不正常是什么意思?你能告诉我你面临的确切问题吗?@Chathz,我稍后会看一看,但从var discussion=db.db.AB\u discussion.Where(d=>d.discussion\u ID==discussion\u ID).FirstOrDefault()开始;并填充视图模型的
Title、
Description`etc属性。然后var comments=db.AB\u DiscussionComments.Where(c=>c.Discussion\u ID==Discussion\u ID)
并使用它填充Comments
属性(将其分解为多个步骤,直到您了解您的操作)model.Comments=Comments。选择(c=>newcommentvm(){Comment\u ID=c.Comment\u ID,Comment\u Description=c.Comment\u Description,…}
我已经更新了,希望能让您更好地理解我的控制器也有问题,