首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MVC中的多个HTML元素相同的ID

MVC中的多个HTML元素相同的ID
EN

Stack Overflow用户
提问于 2018-06-07 05:02:53
回答 2查看 159关注 0票数 0

我正在使用ASP MVC生成多个数据录入行,但是看着MVC生成后的HTML源代码,我刚刚注意到那些HTML元素有一个重复的ID,即使是相同的html类型,它看起来也有问题吗?这是MVC中正常行为吗?如何避免呢?我真的需要让它具有唯一性,假设MVC应该处理多行的ID生成,这对我来说是另外一个问题。我的代码:

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

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 05:47:24

如果在循环中使用tag-helper,它不会为每个元素生成唯一的id,它没有循环中索引位置的上下文。

也就是说,您可以通过使用索引轻松地为循环中的HTML元素生成自己的唯一id“算法”:

@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>
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-07 05:51:53

我认为你可以用这样的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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50729551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档