1

次のようにDALからデータを取得する方法があります。

public List<Comment> GetAllComment(int _UserID)
    {
        using (var context = new TourBlogEntities1())
        {
            var AllComment = from s in context.Comments
                             where s.UserID == _UserID
                             select s;

            return AllComment.ToList<Comment>();
        }
    }

今、私はコントローラーからこのメソッドを次のように呼び出そうとしています。

[HttpPost]
    public ActionResult NewComment(PostComment model)
    {
        var business = new Business();

        var entity = new Comment();
        entity.Comments = model.Comments.Comments;
        //entity.PostID = model.Posts.PostID; HOW TO PASS POSTID???
        entity.UserID = business.GetUserID(User.Identity.Name);

        business.PostComment(entity);

        var CommentsListFromEntity = business.GetAllComment(business.GetUserID(User.Identity.Name));

        var viewmodel = new PostComment();
        viewmodel.CommentsListFromModel = CommentsListFromEntity.ToList<CommentInfo>(); // Error is showing here  

        return View("ViewPost", viewmodel);
    }

ビューをモデルにバインドしましたが、リストを使用できませんでした。リスト自体をビューに渡そうとしても、そのリストをビューで使用できません。

私のモデルクラスは次のとおりです。

public class PostComment
{
    public PostComment()
    {
        Posts = new NewPost();
        Comments = new CommentInfo();
        User = new UserInfoModel();
    }

    public NewPost Posts { get; set; }
    public CommentInfo Comments { get; set; }
    public UserInfoModel User { get; set; }
    public List<CommentInfo> CommentsListFromModel { get; set; }

}

では、ビューでリストを使用するにはどうすればよいですか?私はひどく助けが必要です!

4

1 に答える 1

1

コントローラアクションからActionResultを返す必要があります。

public ActionResult GetAllComment(int _UserID)
{
    using (var context = new TourBlogEntities1())
    {
        var AllComment = from s in context.Comments
                         where s.UserID == _UserID
                         select s;

        return View(AllComment.ToList());
    }
}

これで、対応するビューを次のように強く入力できますList<Comment>

@model List<Comment

次に、モデルをループして表示できます。

@foreach (var comment in Model) 
{
    <div><@comment.Text</div>
}

アップデート:

このメソッドがBLLにある場合は、コントローラーアクションでこのメソッドを呼び出して、結果をビューに渡すことができます。

public ActionResult SomeAction(int userID)
{
    List<Comment> comments = bll.GetAllComment(userID);
    return View(comments);
}

更新2:

このリストに加えて他のプロパティをビューに渡す必要がある場合は、必要なすべての情報を含むビューモデルを定義します。

public class MyViewModel
{
    public List<Comment> Comments { get; set; }
    public string Foo { get; set; }
    public string Bar { get; set; }
    ...
}

次に、コントローラーアクションでこのビューモデルをビューに渡します。

public ActionResult SomeAction(int userID)
{
    var model = new MyViewModel();
    model.Comments = bll.GetAllComment(userID);
    model.Foo = "that's the foo";
    model.Bar = "that's the bar";
    return View(model);
}

そして最後に、ビューは新しいビューモデルに強く型付けされます。

@model MyViewModel

<h2>@Html.DisplayFor(x => x.Foo)</h2>

@foreach (var comment in Model.Comments)
{
    <div>@comment.Text</div>
}

<span>@Html.DisplayFor(x => x.Bar)</span>
于 2012-10-15T09:59:29.413 に答える