Множественные элементы HTML с одинаковым идентификатором в MVC - PullRequest
0 голосов
/ 07 июня 2018

Я генерирую несколько строк ввода данных с использованием ASP MVC, однако, глядя на источник HTML после генерации MVC, я только что заметил, что у этих элементов HTML есть дублированный идентификатор, даже с тем же типом html это выглядит неправильно?это нормальное поведение в MVC и как его избежать?Мне действительно нужно, чтобы он был уникальным, предполагая, что MVC должен обрабатывать генерацию идентификатора для многострочного, что является дополнительной проблемой для меня.Мой код:

  @foreach (var item in Model.lstMeals)
    {
        <tr>


            <td>
                <input asp-for="@item.cuisine.CuisineName" />
                @Html.DisplayFor(modelItem => item.cuisine.CuisineName)
            </td>


        </tr>
    }

Затем ищите в HTML Источник:

 <tr>
               
               
                <td>
                    <input type="text"  id="item_cuisine_CuisineName" name="item.cuisine.CuisineName" value="Italian" />
                    Italian
                </td>
               
              
            </tr>
            <tr>
               
               
                <td>
                    <input type="text" id="item_cuisine_CuisineName" name="item.cuisine.CuisineName" value="French" />
                    French
                </td>
               
              
            </tr>
            <tr>
               
               
                <td>
                    <input type="text" id="item_cuisine_CuisineName" name="item.cuisine.CuisineName" value="Greek" />
                    Greek
                </td>
               
              
            </tr>

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я думаю, вы можете сделать это с помощью цикла for что-то вроде этого.

@for (int i = 0; i < Model.lstMeals.Count; i++) 
{
    <tr>
        <td>
            <input asp-for="@Model.lstMeals[i].item.cuisine.CuisineName[i]" />
            @Html.DisplayFor(modelItem => item.cuisine.CuisineName)
        </td>
    </tr>
}
0 голосов
/ 07 июня 2018

Если вы используете tag-helper в цикле, он не будет генерировать для вас уникальный идентификатор для каждого элемента. У него нет контекста позиции индекса в цикле.

С учетом сказанногоВы можете легко сгенерировать свой собственный уникальный «алгоритм» идентификатора для своих элементов HTML внутри цикла с использованием индекса:

@for(int i = 0; i < Model.lstMeals.Count(); i++)
{
    <tr>
        <td>
            <input asp-for="@Model.lstMeals[i].cuisine.CuisineName"
                type="text"
                id="xxx-xxx-lstmeals-@i" />
        </td>
    </tr>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...