Eingabe Platzhalter von ViewModel-Metadaten in ASP.NET Core 1.0
Ist es möglich, das eingebaute asp-for
tag Helfer, den input zu nehmen Platzhalter aus der [Display(Prompt = "This is the placeholder")]
- Attribut im view-Modell.
[Display(Name="Name", Prompt = "This is the placeholder")]
public string Name { get; set; }
In MVC 5 ich bin in der Lage, dies zu erreichen, indem zusätzliche Logik in meinem editor Vorlagen und die Prüfung der ViewData.ModelMetadata.Watermark
Eigenschaft. Zum Beispiel:
@model string
@{
Dictionary<string, object> htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add("class", "form-control");
if (!string.IsNullOrWhiteSpace(ViewData.ModelMetadata.Watermark))
{
htmlAttributes.Add("placeholder", ViewData.ModelMetadata.Watermark);
}
}
@Html.Label("")
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, htmlAttributes)
@Html.ValidationMessage("", "", new { @class = "text-danger" })
Aber jetzt in ASP.NET Core 1.0 beginnen möchte ich mit dem neuen tag-Helfer Ansatz. Standardmäßig sind die build-in asp-for
Helfer ignoriert einfach die Prompt
Attribut-Wert.
Meine eigene benutzerdefinierte Implementierung der asp-for
Attribut, z.B. my-asp-for
ist eine option und wahrscheinlich werde ich am Ende mit es aus Gründen der Wartbarkeit und der Wiederverwendung zusätzliche Logik.
Aber dann die Watermark
- Eigenschaft ist nicht mehr vorhanden ModelMetadata
, d.h. es gibt keine solche Sache wie For.Metadata.Watermark
.
Der einzige Ort, ich kann sehen, dass die Prompt
Wert in der asp-for
Helfer ist etwas versteckt.
Also ich habe zwei Fragen.
Ist es ein intelligenter Weg, das zu tun ?
Ist es eine schlechte Praxis zu nehmen, die Platzhalter aus der viewmodel-Metadaten, d.h. ich sollte explizit angeben, es in die razor Datei ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gerade ein quick-test und wenn ich Sie richtig verstehe, diese scheint zu funktionieren out of the box für mich mit dem Standard-VS-Vorlage:
Modell:
Ansicht snippet:
Ergebnis: