mvc将模型传递给动作方法

时间:2014-05-15 15:55:25

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

我正在使用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的东西。

1 个答案:

答案 0 :(得分:5)

如果要从视图中调用控制器操作,可以使用

@Html.Action() 

方法并将付款清单作为路线值

@{
    var paymentsList = new List<PaymentViewModel> {new PaymentViewModel(), new PaymentViewModel()};
}

@Html.Action("GetPayments", new { payments = paymentsList })