Asp.net mvc MVC获取和发布数据
很抱歉这个问题真的很难回答,但这让我很困惑 我有一个控制器检查,方法Configure通过一个包含3个列表的模型。 我知道我应该使用HiddenFor来保留信息,但我不知道如何使用列表来实现这一点 我有这些隐藏的字段,但它们似乎无法保留信息Asp.net mvc MVC获取和发布数据,asp.net-mvc,post,razor,get,Asp.net Mvc,Post,Razor,Get,很抱歉这个问题真的很难回答,但这让我很困惑 我有一个控制器检查,方法Configure通过一个包含3个列表的模型。 我知道我应该使用HiddenFor来保留信息,但我不知道如何使用列表来实现这一点 我有这些隐藏的字段,但它们似乎无法保留信息 @Html.HiddenFor(model => Model.inspection) @Html.HiddenFor(model => Model.assignedParts) for (int i = 0; i < Model.Co
@Html.HiddenFor(model => Model.inspection)
@Html.HiddenFor(model => Model.assignedParts)
for (int i = 0; i < Model.ConfigList.Count; i++)
{
@Html.HiddenFor(model => Model.ConfigList[i])
}
@Html.HiddenFor(model=>model.inspection)
@Html.HiddenFor(model=>model.assignedParts)
对于(int i=0;imodel.ConfigList[i])
}
每个Razor指令都会转换为html以显示在浏览器中。在这种情况下,Model.assignedParts的指令在html中可能类似于以下内容:
通过运行应用程序并查看源代码,您可以准确地看到它是什么。分配给value的文本只是Model.assignedParts.ToString()
。解决问题的最简单方法是将视图更改为仅使用实际更改的模型片段
如果要在视图中包含列表,则需要对列表进行foreach,如果列表成员具有属性,则必须为每个属性设置一个@Html.HiddenFor
,例如:
@foreach(Model.part中的变量部分){
@Html.HiddenFor(part.Property1)
@Html.HiddenFor(part.Property2)
}
是的,我想应该是这样的,我当然希望这只是一件简单的事情,哈哈。谢谢你!如果这些解决方案有效…您不能使用foreach
循环为集合生成表单控件,并且这无法绑定到模型(请参阅)。更不用说,代码甚至不能编译。为什么你会通过生成大量隐藏的输入,将它们发送到视图,然后将它们原封不动地发送回控制器来降级你的应用程序。