我正在使用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>
发布于 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>
}
发布于 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>
}
https://stackoverflow.com/questions/50729551
复制相似问题