mvc将模型传递给动作方法

Par*_*osh 1 asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

我正在使用MVC 5,并有一个页面,我将列出合同的付款.有时候没有与合同相关的付款.我的视图带来了列出的模型:

@model List<MyProject.Models.PaymentViewModel>
Run Code Online (Sandbox Code Playgroud)

付款视图上的操作方法如下所示:

        [HttpGet]
    public ActionResult Payment(int id)
    {
        var payments = contractController.GetPaymentsForActiveContract(id);

        return View(payments);
    }
Run Code Online (Sandbox Code Playgroud)

现在GetPaymentsForActiveContract返回一个List,这在我使用时工作正常

@Html.Partial("partialviews/_Payments")
Run Code Online (Sandbox Code Playgroud)

在我看来.但是我现在要做的是调用另一个动作方法,它将返回一个显示付款表的视图,或者如果没有付款就会返回另一个没有付款的操作方法.

我将该行动定义为:

        public ActionResult GetPayments(List<PaymentViewModel> payments)
    {
        if (payments.Count > 0)
        {
            return PartialView("partialviews/_Payments", payments);
        }
        return PartialView("partialviews/_NoPayments");
    }
Run Code Online (Sandbox Code Playgroud)

我不确定如何从我的视图中将模型传递给此Action.我正在查看@Html方法,但似乎找不到任何允许我调用GetPayments方法传递模型并让它返回Partial View的东西.

小智 7

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

@Html.Action() 
Run Code Online (Sandbox Code Playgroud)

方法和通过付款清单作为路线值

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

@Html.Action("GetPayments", new { payments = paymentsList })
Run Code Online (Sandbox Code Playgroud)