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

如何解决ASP.NET Core MVC中另存为功能报错428C9的问题

报错428C9解决方案

核心问题原因

  • 模型绑定字段大小写不匹配:C#大小写敏感,视图中绑定的字段名为IpAddress、ToolHostPort、ToolSvid,但Post接口Bind特性中写的是Ipaddress、Toolhostport、Toolsvid,字段名不匹配导致所有对应字段无法绑定到值,ModelState.IsValid验证直接失败。
  • Pid字段重复提交:视图中同时存在Pid的可编辑输入框和隐藏域,提交时会传递两个重复的Pid值,引发绑定异常。
  • 未处理原记录主键:GET读取原有记录时,会把原记录的主键值一并带到视图,提交插入时会触发主键冲突,这是触发428C9错误的直接原因。

修复步骤

  1. 修正Post接口的Bind特性,和视图字段名保持大小写一致:
// 修正前:[Bind("Ipaddress,Protocol,Toolhostport,Toolsvid,Pid")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Saveas([Bind("IpAddress,Protocol,ToolHostPort,ToolSvid,Pid")] GatewaySettingCloud gatewaySettingCloud)
{
    if (ModelState.IsValid)
    {
        _context.Add(gatewaySettingCloud);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }
    return View(gatewaySettingCloud);
}
  1. 删除视图中重复的Pid字段:如果允许用户编辑Pid,就删除隐藏的Pid输入框;如果不允许用户编辑Pid,就删除可编辑的Pid输入框,只保留隐藏域。
  2. GET接口返回视图前清空原记录的主键,避免插入时主键冲突:
public async Task<IActionResult> Saveas(int? id)
{
    if (id == null)
    {
        return NotFound();
    }
    var gatewaySettingCloud = await _context.GatewaySettingClouds.FindAsync(id);
    if (gatewaySettingCloud == null)
    {
        return NotFound();
    }
    // 把Id替换为你的GatewaySettingCloud实体的实际主键字段名
    gatewaySettingCloud.Id = default;
    return View(gatewaySettingCloud);
}
  1. 若修复后仍有报错,可在Post方法内打断点查看ModelState.Errors中的具体错误描述,即可定位剩余问题。

内容的提问来源于stack exchange,提问作者GG6565

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:09:05