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

Razor表单提交后返回的Model未包含修改数据问题求助

问题原因分析
  • 表单字段名称与模型属性不匹配:你手动定义的输入框name="name2"、隐藏框name="name1",字段名和模型的Name[0]属性完全不对应。ASP.NET MVC的模型绑定依赖表单字段name与模型属性名称一致来完成值映射,所以修改后的内容无法绑定到GlobalTaggingLocalizationModel的Name[0]上。
  • 冗余隐藏字段覆盖有效值:你通过@Html.HiddenFor(m => m.Name[0])生成了一个name为Name[0]的隐藏字段,它的值是页面加载时的原始数据库值。由于输入框name不匹配,模型绑定只会读取这个隐藏字段的原始值,导致接收的模型始终是初始数据。
修复方案

方案1:使用强类型辅助方法(推荐)

直接用Html.TextBoxFor生成输入框,它会自动生成符合模型绑定规则的name属性:

<form action="@Url.Action("SaveIndex")" method="POST" id="idForm">
  @Html.HiddenFor(m => m.AutoCloseWindow)
    <div class="divEditColumns">
        <table cellpadding="0" cellspacing="0" border="0">
            <tr valign="top">
                <td>
                    <div class="Column Column100">
                        <div class="divFieldGroup">
                            <div class="GroupHeadline">Übersetzung</div>
                            <div class="GroupContent">
                                <table cellspacing="" cellpadding="0" border="0">
                                    <tr>
                                        <td class="Label">
                                            <label for="">language</label>
                                        </td>
                                        <td class="Field">
                                            <div class="input-control text">
                                                @Html.TextBoxFor(m => m.Name[0])
                                            </div>
                                        </td>
                                    </tr>
                                </table>
                            </div>
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </div>
</form>

方案2:手动指定正确的name属性

如果坚持手动写input标签,必须保证name属性与模型绑定路径一致:

<input type="text" name="Name[0]" value="@Model.Name[0]" />

无论用哪种方案,必须删除@Html.HiddenFor(m => m.Name[0]),避免原始值覆盖修改后的内容。

额外说明

ASP.NET MVC对集合类型(如数组、List)的绑定规则是使用属性名[索引]的格式作为表单字段name,这样才能正确映射到集合的对应元素。强类型辅助方法会自动遵循这个规则,尽量避免手动编写name属性以减少错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:05:21