0

我怎样才能在视图中有这个模型

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 是答案

4

1 回答 1

1

假设您要显示问题列表及其答案,并让您的 View 模型像这样。

我将 Post1 更改为 Question 并将 Posts2 更改为 Answers 以提高可读性

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 类型的 Question 属性和 List 类型的 Answers 属性

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>
}
于 2012-04-19T18:44:14.747 回答