Trong số official ASP.NET Core tutorial này, tôi có thể sử dụng Input Tag Helper như hình dưới đây. Nhưng do một số known model binding issue of form elements in a foreach loop, tôi muốn sử dụng for loop
để thay thế. Câu hỏi: Nếu tôi thay thế @foreach (var item in Model)
bằng @for (int i=0; i < Model.Count(); i++)
trong View
sau đây. Điều gì sẽ là asp-for
của tôi trong <input asp-for="???" />
? Đối với một số lý do, IntelliSense không nhận ra, ví dụ như, Model [i] .BlogId hoặc @Model [i] .BlogIdASP.NET mvc Xem với trình trợ giúp mô hình và đầu vào IEnumerable
@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>
Tại sao bạn cần các trường biểu mẫu nhập liệu nếu chúng không có trong biểu mẫu? Nếu nó chỉ dành cho mục đích hiển thị, bạn có thể chỉ cần in giá trị. – Shyju
@Shyju Bài đăng này chỉ nhằm mục đích giải thích câu hỏi của tôi. Trong dự án thực, tôi cần các trường biểu mẫu đầu vào và tôi muốn thử nghiệm trình trợ giúp thẻ đầu vào với 'for loop' vì vấn đề với vòng lặp foreach (như được mô tả [ở đây] (http://stackoverflow.com/a/15636604/ 1232087)). Ngoài ra, @model cần phải được IEnumerable. – nam
Bạn không thể sử dụng vòng lặp 'for' với 'IEnumerable' - nó sẽ cần phải là 'IList ' –