0

我有一个对象关系如下:

退款包含优惠券列表

凭证包含行项目列表

我想制作一个单一的 MVC 页面,允许用户输入退款的所有详细信息,包括填充凭证和行项目。所以会有一个带有添加按钮的凭证表单,可以将它们添加到当前退款中,还有一个带有按钮的订单项表单,可以将它们添加到当前凭证中

最初,我着手制作一个 Refund 控制器来处理退款,它的视图将包含用于输入凭证数据的部分视图。此视图将由凭证控制器处理,凭证控制器将负责收集有关每个凭证的信息。

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

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

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

4

1 回答 1

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它封装了您从 Refund 和 Voucher 中需要的数据,并Models为此创建一个控制器和强类型视图。

于 2013-07-29T15:52:40.197 回答