0

現在、特定のブログIDに関連付けられたデータベースからのコメントを表示する部分ビューがあります。私はこれを私の人生のために働かせることができません。ブログIDをパーシャルに渡す方法すら理解できないので、正しいコメントを引き出します。これが私がこれまでに持っているものです。

/ブログ/詳細コメント部分

<h2>Comments</h2>
<hr/>
@if (!User.Identity.IsAuthenticated)
{
    <p>You Must Be Logged In To Comment.</p>
} 
else
{
    @: Posting comments as @User.Identity.Name<hr/>
    @Html.Action("Create", "Comment", new {blogId = Model.Id}); 
    @: <hr/>
}
@Html.Partial("_Comments")

_コメント部分表示

@model IEnumerable<GregG.Models.Comment>

@foreach (var item in Model) {
    if (item.BlogId == 1) //I need to make this dynamic but can't figure out how to pass the id
    {
        <small>Posted by: @Html.DisplayFor(modelItem => item.UserName) on:                    @Html.DisplayFor(modelItem => item.PostedDate)</small>
        @Html.DisplayFor(modelItem => item.Meat)<hr/>
    }
}

私の最初の質問は、ブログIDをパーシャルに渡すにはどうすればよいですか。2番目の質問は、部分行でこのエラーが発生するのはなぜですか。

ディクショナリに渡されるモデルアイテムのタイプは'System.Data.Entity.DynamicProxies.Blog_18032B13AD6163845F0AE57E827683E3638FD813CA4EE066F28D05E5406E633D'ですが、このディクショナリにはタイプ'System.Collections.Generic.IEnumerable`1[GregG.Models。Comment。

助けてくれてありがとう。

4

1 に答える 1

1

Patial空間のビューモデルの指定をサポートするメソッドのオーバーロードがいくつかあります。表示するコメントがすでに現在のビューモデルの一部である場合は、これを使用します。

@Html.Partial("_Comments", Model.Comments)

ただし、それらがビューモデルの一部でない場合は、次のように別のアクションを作成することをお勧めしますCommentController

Action List(int blogId)
{
    // query comments from database
    var model = db.Comments.Where(c => c.BlogId == blogId);
    return View(model);
}

/Blog/Details.cshtmlそして、次のようにファイルから呼び出します。

@Html.Action("List", "Comment", new { blogId = Model.Id })
于 2013-03-25T02:56:58.990 に答える