[Mvc核心:验证属性会为名称重复生成一次

问题描述 投票:0回答:2

old one一样,这是一个问题,但在以前的问题中,其原因被标记为答案。

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

<form ...>
    .....
    <table class="details">
        <thead>
            <tr>
                <th>Prop1</th>
                <th>Prop2</th>
            </tr>
        </thead>
        <tbody>
            @foreach(var item in Model.Items)
            {
               @await Html.PartialAsync("partial-view-name", detail)
            }
        </tbody>
    </table>
    ...
</form>

部分

....
<tr>
   <td><input asp-for="Prop1" /></td>
   <td><input asp-for="Prop2" /></td>
</tr>

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

validation asp.net-core asp.net-core-mvc unobtrusive-validation tag-helpers
2个回答
0
投票

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

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

0
投票

我找到了在HTML字段中添加前缀的解决方案,因此名称在迭代中会有所不同。

@{ ViewData.TemplateInfo.HtmlFieldPrefix = Model.ID; }
<tr>
   <td><input asp-for="Prop1"/></td>
   <td><input asp-for="Prop2"/></td>
</tr>
© www.soinside.com 2019 - 2024. All rights reserved.