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

.NET MVC Post提交时Suggestion传值到Movie模型所有字段为null

问题原因

提交后字段全为null是表单渲染和模型绑定规则不匹配导致的,核心问题有两个:

  • 你在foreach循环里用HiddenFor绑定循环变量item的属性时,生成的所有隐藏域name属性都是重复的item.xxx格式,不符合ASP.NET MVC默认模型绑定的命名规则,后端无法把表单值解析到Suggestion类型的参数上,拿到的model自然全是空默认值。
  • 整个列表被包在同一个表单里,点击任意提交按钮都会把所有行的字段全部提交,本身也无法区分你要操作哪一条建议数据。

修复方法

最适配你当前单条提交场景的方案是给每一行单独做表单,去掉外层包裹整个表格的大表单,修改视图核心代码如下:

<table style="position:absolute; left:35%; top:30%;">
    <tr>
        <th><label>MovieID</label></th>
        <th><label>MovieAdi</label></th>
        <th><label>PlatformID</label></th>
        <th><label>TemaID</label></th>
        <th><label>TurID</label></th>
        <th><label>Add it.</label></th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td style="padding:20px;">
                @Html.DisplayFor(modelItem => item.Id)
            </td>
            <td>@Html.DisplayFor(modelItem => item.MovieAdi)</td>
            <td>@Html.DisplayFor(modelItem => item.PlatformID)</td>
            <td>@Html.DisplayFor(modelItem => item.TemaID)</td>
            <td>@Html.DisplayFor(modelItem => item.TurID)</td>
            <td>
                @* 每行独立表单,仅提交当前行数据 *@
                @using (Html.BeginForm("SuggestionList", "Panel", FormMethod.Post))
                {
                    @Html.Hidden("Id", item.Id)
                    @Html.Hidden("MovieAdi", item.MovieAdi)
                    @Html.Hidden("MovieAciklama", item.MovieAciklama)
                    @Html.Hidden("TurID", item.TurID)
                    @Html.Hidden("TemaID", item.TemaID)
                    @Html.Hidden("PlatformID", item.PlatformID)
                    <button class="btn btn-success">Add the suggestion.</button>
                }
            </td>
        </tr>
    }
</table>

这里直接用Html.Hidden指定字段名和值,核心是保证隐藏域的name属性和Suggestion模型的属性名完全一致,模型绑定器就能正确填充后端的参数对象。

另外你现有Post方法里漏了给MovieAciklama字段赋值,记得补上这行代码,否则数据库里这个字段会一直是空值:

pmovie.MovieAciklama = model.MovieAciklama;

如果后续需要做批量提交功能,就不能用单行表单的方案,需要把视图模型改成List<Suggestion>类型,用for循环渲染带索引标记的字段名,后端接收List<Suggestion>类型的参数处理即可,你当前单条提交的场景用上面的方案就足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:42:30