1

我正在使用一个MVC 5剃须刀页面(使用Entity Framework 6)来显示供应商信息。每个供应商可以有多个类,每个类可以有多个子类。我想要做的是在顶部显示供应商信息,显示该信息下方的类别列表,然后为第三个部分提供所选类别的子类别列表。我的问题是做这件事的最好方法是什么?MVC 5级联数据

目前我正在尝试通过主页获取传递类型供应商的模型,然后在该页面中,通过@ Html.Action(“ActionName”,“ControllerName”,value)显示两个部分视图。我可以在页面加载时没有问题地将类列表部分视图传递给供应商的ID,但真正的问题是如何将选定的类的ID传递给子类的局部视图。我试过使用隐藏字段,但我不知道如何通过html.Action隐藏字段的值。

这是我的第一个MVC应用程序,所以任何帮助,非常感谢。

+1

将模型传递给视图时,模型是否完全填充(每个类和子类)?并且是编辑数据(即表单)的视图? – 2014-12-12 23:39:58

+0

传递给视图的模型包含一个供应商对象。因为我使用的是实体框架,供应商对象有一个vendor.VendorClasses属性,它允许我通过这些类执行foreach循环。但是,供应商对象对其子类不了解。是的,理想情况下,该视图将允许用户更新供应商信息并添加/删除类和子类。 – Snicklefritz 2014-12-12 23:49:39

+0

如果使用partial进行编辑不是最佳选项,因为它不会(默认情况下)正确渲染您的控件。最好在主视图中使用'for'循环或使用自定义的'EditorTemplates'。你可以发布你的模型供应商及其子类 – 2014-12-12 23:52:56

回答

1

首先,你是说你正在使用@Html.Action()助手使用部分视图 - 这不是用于局部视图,而是产生一个导航到另一个页面的链接......这就是说,我认为我知道你想做什么。

其次,你需要发布更多的代码来表明你做了一个尝试 - 堆栈溢出不是免费开发咨询工作的来源。我想我知道你在做什么,但即使发布某种UI模型也可能会使一般讨论变得更容易。这就是说,我不会在答案中给你任何代码,只是我将如何处理这个问题的一般想法。因为您选择了MVC模式,所以您应该为Vendor,VendorClasses以及第三个子类(我将假定其称为VendorSubClass)设置专用控制器。

接下来是关于在单个页面上显示所有信息的部分。唯一可以看到它显示所有信息的地方是VendorSubClass的视图(但只有VendorSubClass属性应该可以在此处编辑),即使如此,也可以使用真正有信息的面包屑。

您需要将对象传递给包含VendorSubClass,其父供应商类别及其祖父供应商信息的视图。如果你使用的是实体框架,这很简单(但你没有说你是这样的,所以我让我的解释更通用)。然后,您可以通过使用助手引用部分观点:

@Html.Partial('VendorPartial', Model.Vendor) 
@Html.Partial('VendorClassPartial', Model.VendorClass) 

,你可以在上面看到,我不是路过的标识 - 而实际性能(对象)本身这部分意见将用来渲染的细节。这个概述应该让你开始,并给你一些谷歌的东西。