2017-08-01 7 views
2

Ich habe gesehen this question, die genau zu decken scheint, was ich tun möchte, aber aus irgendeinem Grund funktioniert die Lösung nicht für mich.Verwenden von Tag-Helper-Validierung für Listenelemente

Ich habe meiner Meinung nach die folgenden:

@model ExerciseEditModel 

@foreach (var item in Model.Rounds) 
{ 
    <!-- bootstrap grid markup omitted --> 
    <div class="form-group col-sm-3"> 
     <label asp-for="item.DurationEstimate"></label> 
     <input asp-for="item.DurationEstimate" type="time" class="form-control" /> 
    </div> 
    <!-- bootstrap grid markup, and more form elements, omitted --> 
} 

die soweit ich entspricht genau, wie die Lösung in der verknüpften Frage arbeitet sagen kann, aber ich habe einen Buildfehler auf der Ansicht, weil

‚ExerciseEditModel‘ enthält keine Definition für ‚item‘ enthalten und keine Erweiterungsmethode ‚item‘ ein erstes Argument vom Typ akzeptieren ‚ExerciseEditModel‘ gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

Es scheint, dass der Umfang der asp-for Helfer die foreach Schleife nicht bemerkt - wie kann ich es funktionieren lassen?

+0

Ockhams Frage Razor: Sie 'mit Vermissen Aussage irgendwo? – krillgar

+0

@krillgar Vielleicht, aber in diesem Fall weiß ich nicht, welche 'using' Aussage ich vermisse (oder welche ich brauche). Nach was soll ich suchen? –

+1

Ich habe Core MVC nicht gemacht, weshalb ich eine Frage gestellt habe. Tut mir leid, ich konnte nicht mehr helfen, aber es sieht so aus, als hätte David G was du brauchst. – krillgar

Antwort

2

Vom docs:

Der asp-for Attributwert ist ein ModelExpression und die rechte Seite eines Lambda-Ausdruck. Daher wird asp-for="Property1" im generierten Code m => m.Property1 wird, weshalb Sie Model nicht voranstellen müssen. Sie können die Zeichen „@“ verwenden, um ein Inline-Ausdruck zu starten und bewegen, bevor die m.

So sollten Sie Ihre Ausdrücke mit einem Präfix @:

@model ExerciseEditModel 

@foreach (var item in Model.Rounds) 
{ 
    <!-- bootstrap grid markup omitted --> 
    <div class="form-group col-sm-3"> 
     <label asp-for="@item.DurationEstimate"></label> 
     <input asp-for="@item.DurationEstimate" type="time" class="form-control" /> 
    </div> 
    <!-- bootstrap grid markup, and more form elements, omitted --> 
} 
Verwandte Themen