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>
}