0

これが私の BlogPost モデル クラスです。

    public class BlogPost
{
    public int Id { get; set; }
    public string Title { get; set; }

    [AllowHtml]
    public string ShortDescription { get; set; }

    [AllowHtml]
    public string PostBody { get; set; }

    public string Meta { get; set; }
    public string UrlSlug { get; set; }        
    public DateTime PostedOn { get; set; }
    public DateTime? Modified { get; set; }

    public virtual ICollection<BlogPostCategory> Categories { get; set; }
    public virtual ICollection<BlogPostTag> Tags { get; set; }
}

これが私の BlogPostCategory モデル クラスです。

    public class BlogPostCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string UrlSlug { get; set; }
    public string Description { get; set; }

    // Decared virtual because the data must be returned from another table.
    public virtual ICollection<BlogPost> BlogPosts { get; set; }
}

各クラスは、個別のコントローラー/ビューに属します。

最後に、Blog の Index View のトップ ポートを次に示します。

@model IEnumerable<MyBlogSite.Models.BlogPost>

@{
   ViewBag.Title = "Index";
 }

@Html.RenderPartial("~/Views/Category/_Categories.cshtml", Model.Categories );

<p>
   @Html.ActionLink("New Blog Post", "Create")
</p>
<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Title)
    </th>
    ....

Model.Categories が渡されているビューでは、この投稿のタイトルから例外が発生しています。BlogPost モデル内でカテゴリを定義したように思えます。私は何を間違っていますか?

4

1 に答える 1

1

Razor ページのモデルはIEnumerable<MyBlogSite.Models.BlogPost>. コレクション内の各アイテムに関する情報を表示しようとしているようです。その場合は、それらをループするか、表示/エディター テンプレートを作成して、それぞれ@Html.DisplayFor(x => x)またはを使用でき@Html.EditorFor(x => x)ます。

@foreach(var post in Model) {
    <p>Do stuff here with the local "post" variable.</p>
}

Razor ビューのディレクティブについて説明しているScott Gu のブログへのリンクを次に示します。@model

于 2013-07-13T19:46:07.183 に答える