2015-08-28 59 views
-1

我创建MVC应用5一个模型,在这个应用我加入使用值“DiscussionPreview_Model”模型名单下跌数据的一个VAR模型和绑定多个数据表绑定两个数据模型在MVC

这是控制器类

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查询方法

+1

您没有阅读我对您最后一个问题的评论吗? DiscussionVM'已经包含了一个属性,用于评论。您需要初始化一个'DiscussionVM',从'AB_Discussion'表中填充其常规属性('Name','Description'等),然后从'AB_DiscussionComments'表中填充它的注释集合。 –

+0

你的意思是工作不正常?你能告诉我你面临的确切问题是什么? –

+0

@StephenMuecke我不能真正理解,你的意思,希望这是我的知识的缺乏,很感激,如果你能告诉我比如 – Chathz

回答

1

这并不在这里工作:

@foreach (var discussion in Model.DiscussionVM) 

因为Model.DiscussionVM不是IEnumerable <>

尝试枚举Model并访问该讨论集中涉及到的项目VM

@foreach (var item in Model) 
{ 
<h3>@item.DiscussionVM.Discussion_Title</h3> 

<div>@item.DiscussionVM.Discussion_Description</div> 
<div>@item.DiscussionVM.Discussion_CreateDate</div> 
} 
+0

其实我在控制器也有问题, – Chathz