一个视图中的多个模型

时间:2012-06-23 04:59:24

标签: c# asp.net-mvc asp.net-mvc-3

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

    <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)

}  

子类别ID应该是部分,ID应该是看起来像这样的页面的ID。

http://localhost:52490/AuditSchedule/Audit/1192
理论上,子菜单的链接应该是

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

问题在于您调用局部视图的方式。 Html.Partial 需要视图名称和模型;因为你没有通过一个模型,所以它正在逐渐消失。 (看起来你期望你的代码调用名为 _SubCategory 的动作,但实际上它试图调用名为 _SubCategory 部分视图。 )尝试明确地传递模型(如果你的模型中有它):

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

或者,您可以使用 Html.Action 方法,该方法将在当前控制器中呈现操作的结果:

@Html.Action("_SubCategory")

我认为第二种方法是你试图做的。

答案 1 :(得分:1)

尝试放

@{ Layout = null; }

在_subcategory视图的顶部