2012-04-19 6 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

+3

표시된 코드가 사용중인 것으로 가정하면, 예를 들어'@ item.Posts2.Count()'를 쓰는 것을 멈추게 할 수는 없습니다. – Tejs

+0

문제는 컨트롤러에서 모든 페치를 만들었으므로 이제는 페치를 표시하는 것입니다. – maztt

답변

1

y 질문 및 답변 목록을 표시하고 View 모델을 이와 같이 만들고 싶습니다.

컨트롤러를 가정하면 PostDetailsViewModel의 목록을 반환하고 PostDetailsViewModel이 유형 포스트의 질문 재산권을 가지고 있으며, 형식 목록에서 속성 답변

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; } 
} 

(나는 가독성에 대한 답변으로 질문과 Posts2하는 Post1 변경)

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

    return View(objVMLsit); 
} 

이보기는 당신에게 출력

을 줄 것이다

편집 : 컨트롤러 동작 방법을보고 나면 특정 게시물 (질문)과 답변을 표시하고 싶습니다. 그래서 그냥 컨트롤러 액션에 대한 코드를 게시하시기 바랍니다 그들

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

의 목록을 반환하는 대신보기로 작업에서 하나 PostViewModel 개체를 반환 그리고이

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