Validation Mvc核心:验证属性只为双应用名称生成一次

Validation Mvc核心:验证属性只为双应用名称生成一次,validation,asp.net-core,asp.net-core-mvc,unobtrusive-validation,tag-helpers,Validation,Asp.net Core,Asp.net Core Mvc,Unobtrusive Validation,Tag Helpers,这是一个类似于a的问题,但在旧问题中,其原因被标记为答案 在我的页面中,有一个表单包含多个项目。每个项目都包含几个元素,因此它们的名称是重复的 ..... 建议1 建议2 @foreach(Model.Items中的var项) { @等待Html.partialSync(“部分视图名称”,详细信息) } ... 部分 。。。。 如前所述,这是设计的行为,但我想知道是否有任何方法可以覆盖它。我认为您的问题是如何将每个对象渲染到屏幕上。如果应用下面的逻辑,它应该正确呈现,并在提交时正确绑定回列

这是一个类似于a的问题,但在旧问题中,其原因被标记为答案

在我的页面中,有一个表单包含多个项目。每个项目都包含几个元素,因此它们的名称是重复的


.....
建议1
建议2
@foreach(Model.Items中的var项)
{
@等待Html.partialSync(“部分视图名称”,详细信息)
}
...
部分

。。。。

如前所述,这是设计的行为,但我想知道是否有任何方法可以覆盖它。

我认为您的问题是如何将每个对象渲染到屏幕上。如果应用下面的逻辑,它应该正确呈现,并在提交时正确绑定回列表

@for (int i=0; i< Model.Items.Count; i++)
{
    <div class="text-center">
       <label asp-for="@Model.Items[i].Prop1"></label>
       <input asp-for="@Model.Items[i].Prop1" />
       <label asp-for="@Model.Items[i].Prop2"></label>
       <input asp-for="@Model.Items[i].Prop2" />
    </div>
}
@for(int i=0;i
我找到了一个解决方案,可以在HTML字段中添加前缀,这样名称在迭代中就会有所不同

@{ViewData.TemplateInfo.HtmlFieldPrefix=Model.ID;}

谢谢@eVolve,你说得绝对正确。我试图简化场景。项目位于局部视图中。请检查更新的问题。好的,那么为什么不将列表传递到分部中,然后执行我在分部中建议的循环,而不是在主页中。我使用一个生成视图和控制器的框架,此工具可能会生成div而不是表,并将分部视图用于不同的目的。