0

私はASP.netの初心者ですが、すべてのコメントを投稿に表示したいと思います。PostControllerのDetail()メソッドは投稿コンテンツのみを表示します。投稿にcommnentを表示するためにDetail()メソッドを処理する方法がわかりません。

誰かが私を助けてくれることを願っています、どうもありがとう。

私は2つのモデルを持っています

public class Post
{
    public int PostID { get; set; }
    public string Title{ get; set; }
    public string Content{ get; set; }

}
public class Comment
{
    public int CommentID { get; set; }
    public int PostID { get; set; }
    public string Content { get; set; }
}

これはポストコントローラーです

public class PostController : Controller
{
   //////
     public ViewResult Detail(int id )
     {
        Post viewpost= (repository.Posts.Single(p => p.PostID == id));

        return View(viewpost);
     }
    ////////////////
}
4

3 に答える 3

1

モラルスには良い答えがあります。Postモデルを変更して、コメントへのナビゲーションプロパティを持たせたくない場合、制御できない場合などは、ViewPostModelのようなものを作成する必要があります。

public class ViewPostModel
{
    public Post Post { get; set; }
    public List<Comment> Comments { get; set; }
}

次に、両方のリストについてリポジトリにクエリを実行する必要があります。

public class PostController : Controller
{
     public ViewResult Detail(int id )
     {
        ViewPostModel viewpost = new ViewPostModel();
        viewPost.Post = repository.Posts.Single(p => p.PostID == id);
        viewPost.Comments = repository.Comments.Where(c=> c.PostID = id).ToList();
        return View(viewpost);
     }
}
于 2013-03-25T05:03:17.027 に答える
0

したがって、まず、投稿からコメントまでのナビゲーションプロパティが必要です。このようなもの:

public class Post
{
    public int PostID { get; set; }
    public string Title{ get; set; }
    public string Content{ get; set; }

    public virtual IEnummrable<Comment> Comments {get; set;}
}

DB-Firstを使用する場合は、EDMXを編集する必要があることに注意してください。

次に、次のようにリポジトリからコメントを取得します。

public ViewResult Detail(int id )
{
   Post viewpost= (repository.Posts.Include("Comments").Single(p => p.PostID == id));
   return View(viewpost);
}

そして、あなたの見解では、あなたのコメントを繰り返して、そのように表示します

@foreach (var comment in Model.Comments)
{
    @comment.Content
}

編集: 上記のすべては、EF \ Linq-2-SQLを使用する場合にのみ関連します(@tostringtheoryに感謝)

于 2013-03-25T04:59:20.647 に答える
0

また、ViewDataを使用してコメントをビューに配置することもできます。

例:アクション:ViewData ["Comments"] = repository.Comments.Where(c => c.PostID = id).ToList();

ビュー:varcomments = ViewData ["Comments"] as List; ...そしてvar-commentsを使用できます

于 2013-03-25T05:38:07.787 に答える