Wie kann ich einen String-Wert für "asp-for" in asp net 5 übergeben?
Ich möchte eine Edit.cshtml-Datei für eine Entität mit vielen zu bearbeitenden Eigenschaften schreiben, daher muss ich die folgenden Codes mehrmals schreiben:
<div class="form-group">
<label asp-for="Email" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
Eigentlich gibt es viele Entitäten, so dass ich viele Edit.cshtml-Dateien schreiben muss. Ich möchte einige Vereinfachungen vornehmen
Ich möchte einige Eigenschaften der Entität im Controller auswählen und mithilfe der Schleife die Eigenschaften in der Ansicht anzeigen. Zum Beispiel: In der Controller-Datei:
public IActionResult Edit(string id)
{
var model = GetModel(id);
var propertyNames= new List<string>()
{
"Name",
"Email"
// add some other property names of the entity
};
ViewData["PropertyList"] = propertyNames;
return View(model);
}
In der Ansichtsdatei:
@{
var propertyNames = (List<string>)ViewData["PropertyList"];
foreach (string item in propertyNames)
{
<div class="form-group">
<label asp-for="@(item)" class="col-md-2 control-label"></label>
<div class="col-md-3,">
<input asp-for="@(item)" class="form-control" />
<span asp-validation-for="@(item)" class="text-danger"></span>
</div>
</div>
}
}
aber es kann nicht funktionieren, da es falsche Codes erzeugt. Es scheint, dass ich keinen Zeichenfolgenwert für den Tag-Helfer "asp-for" übergeben kann.
Zum Beispiel, wenn ich den Code von top in diesen ändere:
@{
string e = "Email";
<div class="form-group">
<label asp-for="@e" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="@e" class="form-control" />
<span asp-validation-for="@e" class="text-danger"></span>
</div>
</div>
}
Der obige Code generiert Folgendes:
<div class="form-group">
<label class="col-md-2 control-label" for="e">e</label>
<div class="col-md-10">
<input class="form-control" type="text" id="e" name="e" value="Email" />
<span class="text-danger field-validation-valid" data-valmsg-for="e" data-valmsg-replace="true"></span>
</div>
</div>
Der erwartete Code lautet:
<div class="form-group">
<label class="col-md-2 control-label" for="Email">Email</label>
<div class="col-md-10">
<input class="form-control" type="email" data-val="true" data-val-email="Email 字段不是有效的电子邮件地址。" data-val-required="Email 字段是必需的。" id="Email" name="Email" value="" />
<span class="text-danger field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
</div>
</div>
Wie soll ich es machen
Ist es mit dem Rasiermesser möglich?