设置Html.嵌套视图模型中的HiddenFor属性

本文关键字:HiddenFor 属性 模型 Html 嵌套 视图 设置 | 更新日期: 2023-09-27 18:12:19

我试图在发布/提交时在我的模型中获得GroupGameId的值,但值显示为0(即使在使用HiddenFor之后)。我已经验证了HttpGet正确地设置了GroupGameId的值,并且它被视图接收。

视图模型

public class GameAssignerModel
{
    // Other properties here....
    public List<GameAssignerTableModel> GameAssignerTable { get; set; }
}
public class GameAssignerTableModel
{
    public int GroupGameId { get; set; }
    [Required]
    public string GameName { get; set; }
    [Required]
    public bool IsAssigned { get; set; }
    public DateTime? UnAssignedDate { get; set; }
}
<<p> 视图/strong>
  @for (int i = 0; i < Model.GameAssignerTable.Count(); i++)
    {
        @Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId)
        <tr>
            <td>@Model.GameAssignerTable[i].GameName</td>
            <td>
                @Html.EditorFor(m => m.GameAssignerTable[i].IsAssigned)
            </td>
            <td>
                @Html.TextBoxFor(m => m.GameAssignerTable[i].UnAssignedDate, new {id = "UnassignedDate" + i})
            </td>
        </tr>
    }

编辑:数据首先通过ajax提交,我不知道这是否重要。我已经验证了它在我的控制器中击中了POST动作,并且模型数据的其余部分正在正确提交。

    if ($("#assignGames").valid()) {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (result) {
                if (result.success) {
                    $("#assignModal").modal("hide");
                    location.reload();
                }

设置Html.嵌套视图模型中的HiddenFor属性

@Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId)放在GameName<td>标签内

@for (int i = 0; i < Model.GameAssignerTable.Count(); i++)
{
    <tr>
        <td>
            @Model.GameAssignerTable[i].GameName
            @Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId)
    </td>
        <td>
            @Html.EditorFor(m => m.GameAssignerTable[i].IsAssigned)
        </td>
        <td>
            @Html.TextBoxFor(m => m.GameAssignerTable[i].UnAssignedDate, new {id = "UnassignedDate" + i})
        </td>
    </tr>
}

我相信如果您检查浏览器中的input html元素,就会发现这个问题。name属性可能不正确。要解决这个问题,您可以为hiddenfor元素添加额外的参数:

new {Name = "GroupGameId"}