1

我正在一个具有多个部分视图的布局的站点上工作。这些局部视图具有连接到它们的数据库的模型。我可以单独显示部分视图,但不能在同一布局上显示。我使用了代码优先的方法,所以我有一个实体模型,其中包含我的所有模型。数据库已生成并连接。我在表格中有数据,我目前正在管理部分中显示这些数据以进行编辑和删除等。我不确定我做错了什么。这是我的布局部分调用:

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

我的控制器是一个列表 - 目前在 auditScheduleController:

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

在我的部分观点中,我已经提出了一些 senarios 并且似乎没有工作。如果我放 @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")

我认为第二种方法是您正在尝试做的。

于 2012-06-23T05:06:05.177 回答
1

试着放

@{ Layout = null; }

在 _subcategory 视图的顶部

于 2012-06-23T11:41:44.033 回答