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&#x2B;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&#x2B;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&#x2B;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)
}