C# 在嵌套的viewmodel中设置Html.HiddenFor属性

C# 在嵌套的viewmodel中设置Html.HiddenFor属性,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,发布/提交时,我试图在我的模型中获取GroupGameId的值,但该值显示为0(即使使用HiddenFor)。我已经验证了HttpGet是否正确设置了GroupGameId的值,并且视图是否收到了该值 视图模型 public class GameAssignerModel { // Other properties here.... public List<GameAssignerTableModel> GameAssignerTable { get; set; }

发布/提交时,我试图在我的模型中获取
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; }
}

我相信如果您在浏览器中检查输入html元素,就会发现问题。name属性可能不正确。要修复此问题,可以为hiddenfor元素添加额外参数:

new {Name = "GroupGameId"}

这应该可以修复该元素的发布。

这是通过将
@Html.HiddenFor(m=>m.GameAssignerTable[i].GroupGameId)
放在
游戏名的
标记中来解决的

@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>
}
for(int i=0;im.GameAssignerTable[i].GroupGameId) @EditorFor(m=>m.gamesassignertable[i].IsAssigned) @(m=>m.GameAssignerTable[i].UnAssignedDate,新的{id=“UnAssignedDate”+i}) }
发布/提交时,我试图在模型中获取GroupGameId的值,但该值显示为0。调试时,您必须添加发布方法,我将鼠标放在模型上,或者将模型添加到观察列表中。我可以看到
GroupGameId的值为0。它只是一个带有
HttpPost
ActionResult
,将模型作为参数发布您的操作方法,并且您的表是否包装在表单标记中?@mxquot;是的,它位于表单标记中,请参见上面的注释。我不认为这个行动是必要的,但如果你愿意,我可以发布它,做任何其他形式的价值观的工作?(“IsAssigned”等)请注意,此操作有效的原因是
不是
的有效同级。
new {Name = "GroupGameId"}
@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>
}