1

複数の部分ビューを含むレイアウトを持つサイトで作業しています。これらの部分ビューには、データベースが接続されたモデルがあります。部分ビューを個別に表示できますが、同じレイアウトには表示できません。私はコード ファーストのアプローチを使用したので、すべてのモデルを含むエンティティ モデルを作成しました。データベースが生成され、接続されました。テーブルにデータがあり、現在、編集や削除などのために管理セクションに表示しています。何が間違っているのかわかりません。これが私のレイアウトの部分的な呼び出しです:

    <li>@Html.Partial("_SubCategory")</li>

私のコントローラーはリストです-現在、auditScheduleControllerにあります:

    public ActionResult _SubCategory()
    {
        return View(_db.SubCategories.ToList());
    }

私の部分的な見方では、いくつかのシナリオを入れましたが、うまくいかないようです。置く @model IEnumerable<QQAudit.Models.Subcategory> と、ページを単独で表示して、サブカテゴリのリストを取得できます。レイアウトから開くとエラーになります。について何かを言う

「ディクショナリに渡されたモデル アイテムのタイプは 'System.Data.Entity.DynamicProxies.AuditSchedule_5218AAD34020C54DC3FF0CFD6169988BB5FED2C296ABF80AC3EFFF93441CE91B' ですが、このディクショナリにはタイプ 'QQAForm.Models.SubCategory' のモデル アイテムが必要です。

私はさまざまなフォーラムを見て、いくつかのものを見つけましたが、私が試したものはすべて何らかの形で失敗しているようです.

面白いことに、私のバックグラウンドは Zend PHP であり、そこで達成しようとしていることは実行できますが、MVC3 C# で複製することはできません。

2012 年 8 月 1 日

私は、ページのIDをリンクに追加したいと思っていました.global.asaxを次のように変更しました:

            routes.MapRoute(
            "AuditSecion", // Route name
            "{controller}/{action}/{id}/{section}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional, section = UrlParameter.Optional }, // Parameter defaults
            new[] { "QQAForm.Controllers" }
        );

リンクに、ページが存在する ID を入力する必要があります。したがって、パーシャルは次のようになります。

@{ Layout = null; }

@model IEnumerable<QQAForm.Models.SubCategory>

@foreach (var item in Model)
{

@Html.ActionLink(item.SubcategoryName, "audit", new { id = item.SubCategoryID }, null)

}  

subcategoryID はセクションであり、ID はこのようなページの ID である必要があります。

http://localhost:52490/AuditSchedule/Audit/1192

理論的には、サブメニューのリンクは

http://localhost:52490/AuditShedule/Audit/1192/1

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

4

2 に答える 2

2

問題は、部分ビューを呼び出す方法です。 Html.Partialにはビュー名とモデルが必要です。あなたはモデルを渡していないので、それは失敗しています。(コードが_SubCategoryという名前のアクションを呼び出すことを期待しているように見えますが、実際には_SubCategoryという名前の部分ビューを呼び出そうとしています。) モデルを明示的に渡してみてください (モデルで使用できる場合):

@Html.Partial("_SubCategory", Model.EnumerableListOfSubCategories)

または、現在のコントローラーでアクションの結果をレンダリングするHtml.Actionメソッドを使用できます。

@Html.Action("_SubCategory")

2番目のアプローチは、あなたがやろうとしていることだと思います。

于 2012-06-23T05:06:05.177 に答える
1

入れてみて

@{ Layout = null; }

_subcategory ビューの上部

于 2012-06-23T11:41:44.033 に答える