asp.net-mvc - 如何将参数与模型一起传递?
问题描述
这是我的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
}
}
问题是:我怎样才能将SavePayments
我存储的活动 ID传递给它ActivityViewModel.ID
?我可以做路由吗?
我不想将整个传递ActivityViewModel
给SavePayments
,否则我需要注意ModelState.IsValid
检查所需的字段。
解决方案
一种选择是使用 的重载Html.Partial
来传递ID
using additionalViewData
,然后在局部视图中检索它并将其作为路由值添加到表单中。
在主视图中
@{ 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)
推荐阅读
- excel - SumIF 值 <> 下一列中的“#NV”
- php - 从数组中提取某些键
- sql - MariaDB - 如果记录存在则插入记录或更新时间戳
- javascript - 当我在 Javascript 中使用 setInterval 从另一个方法调用方法时,未捕获的 TypeError 不是函数
- javascript - 在一个模块中从 JS 到 Shiny 通信
- c++ - 使用 gcc 8.4 设置具有不可复制类型的 unordered_map 时出错
- java - Hibernate 在无限循环中一遍又一遍地获取对象
- perl - Perl Net::Telnet 检索单行输出
- java - 创建时 DDD 实体身份生成
- python - 虚拟环境是在我的用户文件夹中制作的