2016-12-26 4 views
1

Ich möchte HTML-Helfer durch Tag-Helfer in View ersetzen.Ersetzen von HTML-Helfern durch Tag-Helfer

Aus diesem I ersetzt: @model IEnumerable<Person>

von @model IList<Person>

und @Html.DisplayNameFor(model => model.Name)

von <label asp-for="@Model[0].Name"></label>

aber was soll ich verwenden statt: @Html.DisplayFor(modelItem => item.Name)?

<input asp-for="@item.Name" readonly />?

Es sieht nicht richtig aus.

UPDATE: Just Frage zu klären: @Html.DisplayNameFor und <label asp-for beide erzeugen Etiketten in html.

@Html.DisplayFor generiert nur Text. Welcher Tag Helfer kann es ersetzen? Ich möchte input nicht nur zum Anzeigen von Text verwenden.

Antwort

0

Wenn Sie IList verwenden, können Sie auf die Eigenschaft in beide Richtungen zugreifen.

@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/> 

} 

und wenn Sie IEnumerable verwendet, müssen Sie ToList Methode aufrufen, um die Eigenschaften zuzugreifen, ohne 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/> 
} 
+0

Frage verwendet, ist: sollte ich Eingabe verwenden nur Informationen zu zeigen? es erzeugt Textfeld in HTML. – Alexan

+0

Ich möchte das gleiche Ergebnis wie @ Html.DisplayFor, aber mit Hilfe von Tag. – Alexan

+0

Zum Anzeigen von Informationen können Sie HTML-Tags mit einem solchen Rasierer verwenden. '

    @foreach (var Artikel in Model) {
  • @ item.Name
  • }
' – Ahmar