1

最近MVCを使い始め、テストプロジェクトとして簡単な「ブログ」を作成しています。メインページにすべての投稿が表示され、クリックすると詳細ページに移動する基本的な構造があります。

構造

comments現在、ビュー内から投稿に(Comment.cs)を追加しようとしていHome/Detailsます。これには、基本的に1つのビューに2つのモデルが必要です。モデル1がPostモデルで、モデル2がCommentモデルです。

  • Post.csは、投稿の詳細を取得するために使用されます
  • Comment.csは、投稿にコメントを追加するために使用されます

これは私の見解のコードですHome/details

@model MVCPortfolio.Models.Post

@{
    ViewBag.Title = "Details";
}

<h2>@Model.Title - @Model.Author</h2>

<fieldset>
    <legend>Posted on @Model.Date.ToShortDateString()</legend>
    <div class="content">
         @Model.Content
    </div>
</fieldset>
    <div class="comments">
        <ul>
            @foreach (var c in Model.Comments)
            {
            <li>
                @c.Content - @c.Author
            </li>
            }
        </ul>
    </div>
<div class="newcomment">
@*  @Html.EditorFor(model => model) *@
</div>

<p>
@* 
    @Html.ActionLink("New Comment", "Comment", new { id = Model.PostId }) 
*@
    |
    @Html.ActionLink("Back to List", "Index")
</p>

そして、これは私のホームコントローラーであり、そこからコメントを追加したいと思います。

    private PortfolioEntities db = new PortfolioEntities();

    //
    // GET: /Home/

    public ActionResult Index()
    {
        var posts = (from p in db.Posts
                     orderby p.Date
                     select p);

        return View(posts);
    }

    public ActionResult Details(int id)
    {
        var post = (from p in db.Posts
                    where p.PostId == id
                    select p).Single();

        return View(post);
    }

    [HttpPost]
    public ActionResult Comment(Comment comment)
    {
        if (ModelState.IsValid)
        {
            db.Comments.Add(comment);
            db.SaveChanges();

            return RedirectToAction("Details");
        }

        return View(comment);
    }
}

しかし、私が理解していないのは、にを追加する方法ですcommentpost新しいものを簡単に追加できますpostCreate.cshtmlビューを参照)が、詳細ビューcomment内からを追加する方法がわかりません。post

トーマス、お時間をいただきありがとうございます

4

1 に答える 1

2

明確化の観点から、そのための部分的なビューを作成する必要があると思います。

あなたの見解では、代用

@Html.ActionLink("New Comment", "Comment", new { id = Model.PostId }) 

部分ビューをレンダリングするための呼び出しで

@Html.Partial("_Comment")

部分ビューは、を追加するためのUIを処理する必要がありCommentます。最後にCommentPostController

于 2013-01-21T10:15:49.370 に答える