You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core编辑表单点击保存时ID未传递到Controller问题求助

问题根因

表单提交的字段名与Post Action接收的参数名不匹配,导致ASP.NET Core模型绑定失败,返回默认值0。
你的视图中定义了隐藏字段<input type="hidden" asp-for="ID" />,渲染后生成的HTML为<input type="hidden" name="ID" value="实际ID值" />,提交表单时传给后端的字段名为ID,但你的Post方法接收参数为int orgId,二者名称不一致,模型绑定无法匹配到对应值,因此orgId被赋值为值类型的默认值0。
返回按钮可以正常传值的原因是,返回链接通过asp-route-orgId="@ViewBag.orgId"生成的URL参数名与目标Action接收的参数名完全匹配,因此可以正常拿到值。

解决方法

你可以任选以下任意一种方案修复:

方案1:修改Post Action的参数名

将Post方法的参数名改为和表单字段一致的ID:

[HttpPost, ActionName("OrgEdit")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> OrgEdit(int ID)
{
    // 原有逻辑保持不变
}

方案2:修改视图隐藏字段的name属性

将视图中的隐藏字段指定name为orgId,和Action参数名匹配:

<input type="hidden" name="orgId" asp-for="ID" />

方案3:直接接收模型参数(更推荐)

因为视图本身是强类型绑定Organisations模型,你可以直接修改Post方法接收完整模型,无需单独传ID:

[HttpPost, ActionName("OrgEdit")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> OrgEdit(Organisations org)
{
    if (org.ID == 0)
    {
        return NotFound();
    }
    var orgToUpdate = await _context.Organisations.FirstOrDefaultAsync(s => s.ID == org.ID);
    // 后续原有逻辑保持不变
}

内容的提问来源于stack exchange,提问作者n.b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:45:01