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

组合模型提交至Controller时始终为空的问题求助

解决ASP.NET MVC复合模型提交为空的问题

嘿,这个问题我之前也踩过坑,本质就是模型绑定的属性名称不匹配,咱们来快速搞定它:

先看你的模型代码,你定义的复合模型里两个子模型属性是fmodel和smodel:

namespace Test.Models {
    public class Compination {
        public firstmodel fmodel{ get; set; }
        public secondmodel smodel{ get; set; }
    }
}

但在视图里,你却写了model.firstmodel.Name——这里的firstmodel和模型里的fmodel对不上!MVC的模型绑定器根本找不到对应的属性,自然就给你返回空模型了。

直接修改视图即可解决

把视图里的属性引用改成和模型一致的名称就行:

@model Test.Models.Compination
@using (Html.BeginForm("Edit", "Home", FormMethod.Post)){
    <div>
        @Html.LabelFor(model => model.fmodel.Name, "Name")
        @Html.EditorFor(model => model.fmodel.Name)
    </div>
    <!-- 其他子模型字段同理,把secondmodel换成smodel -->
}

为啥会这样?(简单说下原理)

ASP.NET MVC的模型绑定是靠表单输入框的name属性来匹配模型属性的。当你用EditorFor(model => model.fmodel.Name)时,生成的HTML输入框name会是fmodel.Name,绑定器就能顺着这个路径找到Compination里的fmodel,再把值赋给它的Name属性。要是名称错了,绑定器找不到对应属性,就只能初始化一个空的复合模型给你。

最后给你两个小建议:

  • 尽量遵循C#命名规范,类名用帕斯卡命名(比如FirstModel代替firstmodel),属性名也尽量清晰,比如用FirstModel代替fmodel,能大幅减少这类拼写错误。
  • 提交前可以打开浏览器开发者工具,检查生成的输入框name属性是不是和模型的属性路径一致,这样能快速排查绑定问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:21:31