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

ASP.NET Razor表单提交后模型为空,求助获取前端修改后模型

问题解决方法

针对你的两个疑问,直接给出解决方案:

1. 如何为saveTagging方法中的模型传入参数?

不需要手动给模型传参数,ASP.NET MVC的模型绑定机制会自动完成这个工作。你只需要按以下方式定义SaveTagging方法:

[HttpPost]
public ActionResult SaveTagging(TaggingViewModel model)
{
    // 这里的model就是前端提交后自动填充好的对象
    // 执行保存逻辑
    return RedirectToAction("Tagging", new { id = model.MainNodes[0].children[0].ItemId, itemType = model.MainNodes[0].children[0].ItemType });
}

同时确保前端表单通过Html.BeginForm或原生<form>标签指向这个Post方法,比如:

@using (Html.BeginForm("SaveTagging", "YourControllerName", FormMethod.Post))
{
    // 你的表单内容(包括CheckBoxFor、HiddenFor等控件)
    <input type="submit" value="保存" />
}

2. 获取前端修改后的模型,而非旧模型

核心是不要在Post方法里重新实例化模型,直接用方法参数接收MVC自动绑定后的对象即可。

要保证模型绑定正常工作,还需要满足几个前提:

  • TaggingViewModel的所有需要绑定的属性必须有get和set访问器,比如:
    public class TaggingViewModel
    {
        public List<MainNode> MainNodes { get; set; } // 必须有set
        // 其他属性同理
    }
    
    public class MainNode
    {
        public List<ChildNode> children { get; set; } // 必须有set
        // 其他属性
    }
    
    public class ChildNode
    {
        public bool IsChecked { get; set; }
        public int ItemId { get; set; }
        public int GlobalTaggingId { get; set; }
        public ItemType ItemType { get; set; }
    }
    
  • 集合类型(比如MainNodes、children)必须是List<T>这类支持索引访问的可枚举类型,MVC才能正确绑定集合中的元素。
  • 所有需要提交的控件都必须放在表单内部,否则其值不会被发送到后端。

如果绑定后模型仍为空或部分属性缺失,可以通过ModelState.IsValid检查绑定状态,或者打印ModelState.Values查看具体绑定错误,定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:31