【发布时间】:2018-07-17 08:47:04
【问题描述】:
这是我的View(型号ActivityViewModel):
@model GPMS.Models.ActivityViewModel
<div class="tab-pane" id="managepayments" role="tabpanel">
@{ Html.RenderPartial("_Payments", Model.Payments); }
</div>
渲染一个局部(模型IEnumerable<GPMS.Models.PaymentViewModel>):
@model IEnumerable<GPMS.Models.PaymentViewModel>
@using (Ajax.BeginForm("SavePayments", "Activities", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "DynamicContainer", InsertionMode = InsertionMode.Replace, OnBegin = "AjaxBeginFormOnBegin", OnComplete = "AjaxBeginFormOnComplete", OnSuccess = "AjaxBeginFormOnSuccess", OnFailure = "AjaxBeginFormOnFailure" }))
{
@Html.AntiForgeryToken()
<!-- My Form -->
}
将Ajax 请求发送到我的控制器的Action:
public ActionResult SavePayments(IEnumerable<PaymentViewModel> payments)
{
if (ModelState.IsValid) {
// code; here I need ActivityViewModel.ID
}
}
问题是:如何将存储在ActivityViewModel.ID 中的活动ID 也传递给SavePayments?我可以使用路由吗?
我不想将整个ActivityViewModel 传递给SavePayments,否则我需要注意ModelState.IsValid 检查的必填字段。
【问题讨论】:
-
您在 parent 和 partial 中定义了不同的
@model类型,但您使用的是相同的Model。怎么会? -
您的代码将引发异常。你需要展示真实的代码。
-
@StephenMuecke:错字!固定!
-
那么为什么不在主视图中包含表单呢?
-
@StephenMuecke:因为我只想发回/管理付款,而不是整个活动。在主视图中,我可以有不同的形式。
标签: asp.net-mvc parameters model routing