通过标记帮助程序替换html帮助程序

时间:2016-12-26 04:38:47

标签: razor view asp.net-core-mvc html-helper tag-helpers

我想在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来显示文字。

1 个答案:

答案 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/>
}