2012-04-19 3 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 ou хочет показать список вопросов и ответов, а также модель вашего вида.

(я изменил 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 имеет вопрос свойство типа Post и ответы Свойства Перечня типа

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

    return View(objVMLsit); 
} 

Это View даст вам выход

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

EDIT: После просмотра вашего метода действий с контроллером, я думаю, вы хотите показать конкретный пост (вопрос) и его ответы. Так просто возвращает один объект 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> 
} 
Смежные вопросы