首页 > 解决方案 > Mvc Core:为重复的名称生成一次验证属性

问题描述

这是一个与旧问题一样的问题,但在旧问题中,其原因被标记为答案。

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

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

正如这里提到的,这是设计的行为,但我想知道是否有任何方法可以覆盖它。

标签: validationasp.net-coreasp.net-core-mvcunobtrusive-validationtag-helpers

解决方案


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

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

推荐阅读