Asp.net mvc 如何将参数与模型一起传递?

Asp.net mvc 如何将参数与模型一起传递?,asp.net-mvc,parameters,model,routing,Asp.net Mvc,Parameters,Model,Routing,以下是我的视图模型活动视图模型: 问题是:我如何将我存储在ActivityViewModel.ID中的活动ID传递给SavePayments?我能处理路由问题吗 我不想将整个ActivityViewModel传递给SavePayments,否则我需要处理ModelState.IsValid检查所需的字段。一个选项是使用Html.Partial重载,使用additionalViewData传递ID,然后在部分视图中检索它,并将其作为路由值添加到表单中 大体上 @{ Html.RenderParti

以下是我的视图模型活动视图模型:

问题是:我如何将我存储在ActivityViewModel.ID中的活动ID传递给SavePayments?我能处理路由问题吗


我不想将整个ActivityViewModel传递给SavePayments,否则我需要处理ModelState.IsValid检查所需的字段。

一个选项是使用Html.Partial重载,使用additionalViewData传递ID,然后在部分视图中检索它,并将其作为路由值添加到表单中

大体上

@{ Html.RenderPartial("_Payments", Model.Payments, new ViewDataDictionary { { "ID", Model.ID} }); }
在局部

@using (Ajax.BeginForm("SavePayments", "Activities", new { id = ViewData["ID"] }, new AjaxOptions { ....
然后在POST方法中为ID添加一个参数

public ActionResult SavePayments(int id, IEnumerable<PaymentViewModel> payments)

您在父级和分部中定义了不同的@model类型,但使用的是同一个模型。为什么?你的代码会抛出异常。你需要显示真实的代码。@StephenMuecke:typo!固定的那么,为什么不在主视图中包含表单呢?@StephenMuecke:因为我只想发回/管理付款,而不是整个活动。在主视图中,我可以有不同的形式。
@{ Html.RenderPartial("_Payments", Model.Payments, new ViewDataDictionary { { "ID", Model.ID} }); }
@using (Ajax.BeginForm("SavePayments", "Activities", new { id = ViewData["ID"] }, new AjaxOptions { ....
public ActionResult SavePayments(int id, IEnumerable<PaymentViewModel> payments)