Razor 如何发布隐藏值数组
我有一个包含列表的模型Razor 如何发布隐藏值数组,razor,asp.net-core,asp.net-core-2.0,Razor,Asp.net Core,Asp.net Core 2.0,我有一个包含列表的模型 public List<Property> Properties { get; set; } 我可以从这页的资料中看出他们正在填写 <input id="property_Value" name="property.Value" type="hidden" value="2018-04-17T12:14:36.1126718+00:00" /> <input id="property_Key" name="property
public List<Property> Properties { get; set; }
我可以从这页的资料中看出他们正在填写
<input id="property_Value" name="property.Value" type="hidden" value="2018-04-17T12:14:36.1126718+00:00" />
<input id="property_Key" name="property.Key" type="hidden" value="CreateDate" />
<input id="property_Id" name="property.Id" type="hidden" value="5" />
<input id="property_Value" name="property.Value" type="hidden" value="2018-04-17T12:14:36.1136756+00:00" />
<input id="property_Key" name="property.Key" type="hidden" value="UpdateDate" />
<input id="property_Id" name="property.Id" type="hidden" value="6" />
<input id="property_Value" name="property.Value" type="hidden" value="21880" />
<input id="property_Key" name="property.Key" type="hidden" value="FiscalId" />
但是,当表单被过帐时,其他项的值也被过帐,但属性列表为空。我猜这与隐藏字段的id或名称有关
更新:
尝试使用for循环
for (var i = 0 ; i < Model.Client.Properties.Count() ; i++)
{
@Html.Hidden($"properties[{i}].id", Model.Client.Properties[i].Id)
@Html.Hidden($"properties[{i}].value", Model.Client.Properties[i].Value)
@Html.Hidden($"properties[{i}].key", Model.Client.Properties[i].Key)
}
for(var i=0;i
给予
<input id="properties_1__key" name="properties[1].key" type="hidden" value="UpdateDate" />
<input id="properties_2__id" name="properties[2].id" type="hidden" value="6" />
<input id="properties_2__value" name="properties[2].value" type="hidden" value="21880" />
<input id="properties_2__key" name="properties[2].key" type="hidden" value="FiscalId" />
也不起作用问题是您的
foreach
循环丢失了属性的上下文。相反,您需要为循环使用经典的,并为属性编制索引。例如:
for (var i = 0 ; i < Model.Client.Properties.Count() ; i++)
{
@Html.Hidden(x => Model.Client.Properties[i].Id)
@Html.Hidden(x => Model.Client.Properties[i].Value)
@Html.Hidden(x => Model.Client.Properties[i].Key)
}
for(var i=0;iModel.Client.Properties[i].Id)
@隐藏(x=>Model.Client.Properties[i].Value)
@隐藏(x=>Model.Client.Properties[i].Key)
}
这里有重复的id
s,这是无效的HTML。这通常是由使用foreach
循环引起的,最好使用经典的for()
循环并索引属性。好的,我同意你的观点,但是@Html.HiddenFor(x=>property.Id)没有取名字,它自己会取名字。是的,但是如果你这样做了@Html.HiddenFor(x=>Model.Client.properties[0].Id)
您将看到有效的HTML,并且很可能是发布的正确数据。您好,您想提交答案吗?我已经搞了一个小时了!
for (var i = 0 ; i < Model.Client.Properties.Count() ; i++)
{
@Html.Hidden(x => Model.Client.Properties[i].Id)
@Html.Hidden(x => Model.Client.Properties[i].Value)
@Html.Hidden(x => Model.Client.Properties[i].Key)
}