我正在使用MVC 5,并且有一个页面,我将列出合同的付款。有时候没有与合同相关的付款。我的观点带来了要列出的模型:
@model List<MyProject.Models.PaymentViewModel>
付款视图上的操作方法如下所示:
[HttpGet]
public ActionResult Payment(int id)
{
var payments = contractController.GetPaymentsForActiveContract(id);
return View(payments);
}
现在,GetPaymentsForActiveContract返回一个List,当我使用
时,这可以正常工作@Html.Partial("partialviews/_Payments")
在我看来。但我现在要做的是调用另一个动作方法,它会返回一个显示付款表的视图,或者如果没有付款则会返回另一个没有付款的操作方法。
我将该行动定义为:
public ActionResult GetPayments(List<PaymentViewModel> payments)
{
if (payments.Count > 0)
{
return PartialView("partialviews/_Payments", payments);
}
return PartialView("partialviews/_NoPayments");
}
我不确定如何从我的视图中将模型传递给此Action。我正在查看@Html方法,但似乎找不到任何允许我调用GetPayments方法传入模型并让它返回Partial View的东西。
答案 0 :(得分:5)
如果要从视图中调用控制器操作,可以使用
@Html.Action()
方法并将付款清单作为路线值
@{
var paymentsList = new List<PaymentViewModel> {new PaymentViewModel(), new PaymentViewModel()};
}
@Html.Action("GetPayments", new { payments = paymentsList })