【问题标题】:MVC 5 Cascading DataMVC 5 级联数据
【发布时间】:2015-02-11 18:17:25
【问题描述】:

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

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

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

【问题讨论】:

  • 当您将模型传递给视图时,您的模型是否完全填充(每个类和子类)?并且是用于编辑数据的视图(即表单)?
  • 传递给视图的模型包含一个供应商对象。由于我使用的是实体框架,因此 vendor 对象有一个 vendor.VendorClasses 属性,它允许我在类中执行 foreach 循环。然而,vendor 对象对它的子类一无所知。是的,理想情况下,视图将允许用户更新供应商信息并添加/删除类和子类。
  • 如果您的编辑,使用部分不是最好的选择,因为它不会(默认情况下)正确呈现您的控件。最好在主视图中使用for 循环或使用自定义EditorTemplates。你可以为Vendor 及其子类发布你的模型

标签: razor asp.net-mvc-5 entity-framework-6 partial-views html-helper


【解决方案1】:

首先,您是说您正在使用带有 @Html.Action() 助手的部分视图 - 这不是用于部分视图,而是生成一个链接以导航到另一个页面......话虽如此,我想我知道你想做什么。

其次,您需要发布更多代码以表明您进行了尝试 - 堆栈溢出不是免费开发咨询工作的来源。我想我知道您要做什么,但即使发布某种 UI 模型也可能使一般性讨论更容易。话虽如此,我不会在答案中给你任何代码,只是大致了解我将如何解决问题。

首先,由于您选择了 MVC 模式,因此您应该为 Vendor、VendorClasses 以及第三个子类(我将假设其称为 VendorSubClass)有一个专用控制器。

接下来是关于在单个页面上显示所有信息的部分。我可能认为显示所有这些信息的唯一地方是在 VendorSubClass 的视图上(但是这里只有 VendorSubClass 属性应该是可编辑的),即便如此,拥有真正信息丰富的面包屑可能才有意义。

您需要将一个对象传递给包含 VendorSubClass、其父 VendorClass 及其祖父 Vendor 信息的视图。如果您使用的是实体框架,这很容易(但您没有说您是,所以我的解释更加通用)。然后,您可以使用帮助程序引用部分视图:

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

正如您在上面看到的,我没有传递 ID,而是传递部分视图用来呈现细节的实际属性(对象)本身。此概述应该可以帮助您入门,并为您提供一些 google 的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多