2012-04-19 136 views
0

如何可以在考慮到該模型asp.net MVC 3模型視圖中的

public class PostDetailsViewModel 
{ 
    public Post Posts1 { get; set; } 
    public IEnumerable<Post> Posts2 { get; set; } 
} 

視圖

@model IEnumerable<forum3.ViewModels.PostDetailsViewModel> 
@foreach (var item in Model) 
{ 
    <span>@item.Posts1.Title</span><br /> 
    <p>@item.Posts1.Question</p><br /><br /> 
} 

控制器

public ViewResult PostDetails(int id) 
    { 
     PostDetailsViewModel postdetailsviewmodel = new PostDetailsViewModel(); 
     postdetailsviewmodel.Posts1 = postRepository.Find(id); 
     postdetailsviewmodel.Posts2 = postRepository.FindPostByParentIds(id); 
     List<PostDetailsViewModel> postDetailsList = new List<PostDetailsViewModel>(); 
     postDetailsList.Add(postdetailsviewmodel); 
     return View(postDetailsList); 
    } 

如何可以具有POST2在這是答案的看法

+0

您查看請張貼代碼爲您的控制器動作。 – Maess 2012-04-19 18:22:42

+3

假設所顯示的代碼是您正在使用的代碼,例如,應該阻止您編寫'@ item.Posts2.Count()'。 – Tejs 2012-04-19 18:23:16

+0

好的事情是,我已經使控制器中的所有提取現在我只想顯示提取。 – maztt 2012-04-19 18:27:15

回答

1

假設y ou想要顯示問題列表和答案,並讓您的View模型如此。

我改變POST1提問和Posts2來回答更好的可讀性

public class PostDetailsViewModel 
{ 
    public Post Question { get; set; } 
    public List<Post> Answers { get; set; } 
} 
public class Post 
{ 
    public int ID { set; get; } 
    public string Title { set; get; } 
} 

假設你的控制器返回PostDetailsViewModel的列表和PostDetailsViewModel具有類型發表的問題性質和答案List類型的屬性

public ActionResult Posts() 
{ 
    List<PostDetailsViewModel> objVMLsit = new List<PostDetailsViewModel>(); 
    //add the object to objVMList here 

    return View(objVMLsit); 
} 

此視圖會給你輸出

@model List<MvcApplication1.Models.PostDetailsViewModel> 
@foreach (var item in Model) 
{ 
    <h2>@item.Question.Title</h2><br /> 
    foreach (var answer in item.Answers) 
    { 
     <p>@answer.Title</p> 
    } 
} 

編輯:看到你的控制器行動方法後,我想你想顯示一個特定的帖子(問題)及其答案。所以只是從操作返回一個PostViewModel對象到您的視圖,而不是返回他們

public ViewResult PostDetails(int id) 
{ 
    PostDetailsViewModel postdetailsviewmodel = new PostDetailsViewModel(); 
    postdetailsviewmodel.Question= postRepository.Find(id); 
    postdetailsviewmodel.Answers= postRepository.FindPostByParentIds(id); 
    return View(postdetailsviewmodel); 
} 

的名單,並改變這樣

@model MvcApplication1.Models.PostDetailsViewModel 
<h2>@Model.Question.Title</h2><br /> 
@foreach (var answer in Model.Answers) 
{ 
    <p>@answer.Title</p> 
}