在这个 official ASP.NET Core tutorial , 我可以使用 Input Tag Helper如下所示。但由于 known model binding issue of form elements in a foreach loop , 我想用 for loop
反而。 问题 : 如果我要替换 @foreach (var item in Model)
与 @for (int i=0; i < Model.Count(); i++)
在下面View
.我的 asp-for
会是什么?在 <input asp-for="???" />
?由于某种原因,智能感知无法识别,例如 Model[i].BlogId 或 @Model[i].BlogId
@model IEnumerable<EFGetStarted.AspNetCore.NewDb.Models.Blog>
@{
ViewBag.Title = "Blogs";
}
<h2>Blogs</h2>
<p>
<a asp-controller="Blogs" asp-action="Create">Create New</a>
</p>
<table class="table">
<tr>
<th>Id</th>
<th>Url</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
<input asp-for="@item.BlogId" />
</td>
<td>
<input asp-for="@item.Url" />
</td>
</tr>
}
</table>
最佳答案
我遇到了同样的问题并以这种方式解决了它:
@for (int i = 0; i < Model.Translations.Count; i++)
{
@Html.HiddenFor(m => m.Translations[i].LanguageId)
<form-group-text asp-for="@Model.Translations[i].Content"/>
}
重要的部分是使用
for
循环,并访问 asp-for
通过 @Model
.也就是说,您应该重新考虑,如果您的模型本身应该是
IEnumerable
.而是为它创建一个属性。您还需要确保您的收藏可以通过索引访问。你可以将你的属性设为 IList
.当您分配 IEnumerable
可以调用ToList
前。
关于razor - 带有 IEnumerable 模型和输入标签助手的 ASP.NET mvc View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441339/