设置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(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"}