我想在View中用标记帮助器替换html助手。
为此,我取代:@model IEnumerable<Person>
@model IList<Person>
和@Html.DisplayNameFor(model => model.Name)
<label asp-for="@Model[0].Name"></label>
但我应该使用的是:@Html.DisplayFor(modelItem => item.Name)
?
<input asp-for="@item.Name" readonly />
?
看起来不对。
更新:只是为了澄清问题:@Html.DisplayNameFor
和<label asp-for
都会在html中生成标签。
@Html.DisplayFor
只生成文字。哪个标签助手可以取代它?我不想仅使用input
来显示文字。
答案 0 :(得分:0)
当您使用IList
时,您可以双向访问该属性。
@model IList<WebApp.Models.Person>
<input type="text" asp-for="@Model[0].Name" />
@foreach(var item in Model)
{
<input type="text" asp-for="@item.Name" readonly/>
}
如果您使用了IEnumerable
,则需要调用ToList
方法来访问属性,而不使用foreach
@model IList<WebApp.Models.Person>
@{
var model2 = Model.ToList();
}
<input type="text" asp-for="@model2[0].Name" />
@foreach(var item in Model)
{
<input type="text" asp-for="@item.Name" readonly/>
}