MVC 4页面中的嵌套列表

时间:2013-07-29 15:12:16

标签: asp.net-mvc asp.net-mvc-4

我的对象关系如下:

退款包含优惠券列表

凭证包含订单项列表

我想创建一个MVC页面,允许用户输入退款的所有详细信息,包括填写凭证和订单项。因此,会有一个凭证表单,其中包含一个添加按钮,可将其添加到当前退款中,还有一个订单项表单,其中包含一个按钮,可将其添加到当前凭证中

最初我打算制作一个可以处理退款的退款控制器,它的视图将包含输入凭证数据的部分视图。该视图将由凭证控制器处理,凭证控制器将负责收集关于每个凭证的信息。

在凭证控制器的视图上,会有一个用于输入订单项的部分视图。这将由订单项控制器处理。

现在我对MVC很陌生,可能还没有全力以赴,但我有点担心这不是正确的做事方式。例如,当用户输入所有行项目详细信息并提交到Ajax表单时,我假设它将是处理此项目的行项目控制器。如果我这样做,我的退款对象根本不知道这一点,最终目标是在退款控制器上填充退款对象。

我是想将数据从一个控制器传递到另一个控制器,还是从一个控制器从另一个控制器调用一个操作,或者我的添加按钮是在凭证控制器上还是在退款控制器上?非常感谢任何指针

1 个答案:

答案 0 :(得分:2)

在任何视图中,您都可以从任何控制器调用操作。例如,Razor ActionLink助手允许您从该控制器传递控制器名称和方法名称:

@Html.ActionLink("Link text, "Action Name", "Controller Name")

一个发布到与呈现视图的控制器不同的控制器的表单:

@Html.BeginForm("Action Name", "Controller Name", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    // Form fields
}

是否要执行此操作取决于应用程序的整体设计。创建一个“RefundVoucher”ViewModel可能更简单,它可以从您的退款和凭证Models封装您需要的数据,并为此创建一个控制器和强类型视图。