0

インデックス.cshtml

<div class="news_content_container">
    @Html.Action("_AddImagesToNews", "PostImages")
</div>

_AddImagesToNews.cshtml

<div>
    @using (Html.BeginForm("_AddImagesToNews", "PostImages", FormMethod.Post, new { id = "form_post_images" }))
    {
        @Html.Hidden("Id", (int)ViewBag.newsId)
        <div class="editor-label">
            <input type="file" name="Files" id="Files" multiple="multiple" />
        </div>

        <div class="submit-field">
            <input type="submit" value="Ekle" class="button_gray_small" />
        </div>
    }
</div>
<div class="images_content_container">
    @Html.Partial("_PostImages", Model.ToList())
</div>

_PostImages.schtml

@model IEnumerable<NewsCMS.DAL.EDM.PostImages>

@foreach (var item in Model)
{
    <img src="~/@(item.MiddleImageUrl)" alt="@(item.Posts.Title)" />
}

コントローラーのアクション

public ActionResult _AddImagesToNews(int Id)
{
    using (NewsCMSEntities entity = new NewsCMSEntities())
    {
        ViewBag.newsId = Id;
        return PartialView(entity.PostImages.Where(x => x.PostId == Id).ToList());
    }
}

ビューの読み込み中に、タイトルとしてエラーが発生します。理由がわかりません。_PostImages.cshtmlに書き込む@Model.Count()と、エラーなしで正しい値が表示されます。

私は何が欠けていますか?

ありがとう...

4

4 に答える 4

2

わかると思います。これを試して

return PartialView(entity.PostImages.include("Posts").Where(x => x.PostId == Id).ToList());
于 2013-02-23T22:18:11.967 に答える
1

私はそれを解決しました。次のようにモデルを渡しました。

var images = entity.PostImages.Where(x => x.PostId == Id).ToList();
return PartialView(images);

また、すべてのリプレイ、特に @DaveA に感謝します...

私はいつもこのように使うべきだと思います。

于 2013-02-23T22:20:55.123 に答える
0

ビューでエンティティを渡すと、スコープが終了するとコンテキストが破棄され、ビューでは、コンテキストを介してのみアクセスできる
オブジェクトにアクセスしています。に関する追加データitem.Posts.Titleを表示する場合は、取得する必要がありますtitlePosts

usingModel.Count()は正解です。.ToList() の実行後にデータを取得する必要がなく、lis のメンバー数をローカルで計算できるからです。

于 2013-02-23T21:54:08.437 に答える
0

この問題は通常、具体的なオブジェクトがなく、「.ToList()」が必要な場合に発生しますが、指定されたコードではそうではありません。

レイアウトまたは他の部分ビューでデータベースから取得したデータを使用している場合は、(.ToList() を使用して) それらが具体的なオブジェクトであることを確認してください。

IntelliTrace を使用して、例外がスローされた正確な場所を確認する必要があります (別の場所にある可能性があります)。

于 2013-02-23T22:19:04.390 に答える