我在发布/提交时尝试在模型中获取GroupGameId
的值,但值显示为0(即使在使用HiddenFor
后)。我已经确认HttpGet
正在正确设置GroupGameId
的值,并且视图已收到该值。
的ViewModels
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; }
}
查看
@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();
}
答案 0 :(得分:2)
通过将@Html.HiddenFor(m => m.GameAssignerTable[i].GroupGameId)
放在<td>
GameName
标记内解决了问题
@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>
}
答案 1 :(得分:-1)
我相信如果您在浏览器中检查输入html元素,您将看到问题。 name属性可能不正确。要修复,可以为hiddenfor元素添加额外参数:
new {Name = "GroupGameId"}
这应该修复该元素的发布。