Mvc Core: Атрибуты проверки генерируются один раз для дублированных имен - PullRequest
0 голосов
/ 23 января 2020

Это вопрос, подобный старому , но в старом причина этого помечена как ответ.

Моя страница, есть форма, которая содержит несколько Предметы. Каждый элемент содержит несколько элементов, поэтому их имя дублируется.

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

Как уже упоминалось здесь это заданное поведение, но я удивляюсь если есть способ переопределить его.

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Я нашел решение добавить префикс к полям HTML, чтобы в итерациях имя было другим.

@{ ViewData.TemplateInfo.HtmlFieldPrefix = Model.ID; }
<tr>
   <td><input asp-for="Prop1"/></td>
   <td><input asp-for="Prop2"/></td>
</tr>
0 голосов
/ 23 января 2020

Я думаю, что ваша проблема в том, как вы выводите каждый объект на экран. Если вы применяете логи c ниже, они должны корректно отображаться, а также корректно привязываться к списку при отправке.

@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>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...