2017-08-10 1 views
1

Ich möchte in der Lage sein, ein Attribut z. [AttachDatePicker], um meine ViewModel-Datetime-Eigenschaften zu dekorieren. Wenn ich also ein Scaffolding verwende, gibt es z. data-datepicker als html-Attribut für das html-Element, an das der datepicker angehängt werden soll.Custom Model Attribut für die Ausgabe HTML-Daten-Attribute

Ich könnte es basierend auf dem Microsoft Beispiel here tun, aber es fühlt sich nicht richtig an, da es nicht mit der Validierung verbunden ist, was ich brauche.

Idealerweise möchte ich vermeiden, benutzerdefinierte Vorlagen zu erstellen. Irgendwelche Ideen?

+0

Ich denke, es ist besser, wenn Sie in t suchen Einbetten: https://stackoverflow.com/questions/37674824/templating-in-asp-net-core –

Antwort

0

Warum nicht ein Editor Template definieren und die Eigenschaft DateTime mit [UIHint] versehen?

Zum Beispiel erstellen Views/Shared/EditorTemplates/Datepicker.cshtml

@model DateTime 

@{ 
    IDictionary<string, object> htmlAttributes = new Dictionary<string, object>(); 
    // TODO: retrieve annotations from Model Metadata and add html attributes accordingly, e.g. "required" 
    htmlAttributes.Add("data-datepicker", ""); 
} 

<div class="@* TODO: set classes depending on your CSS framework *@"> 
    @Html.TextBox("", Model, htmlAttributes) 
</div> 

Attribute Ihrer Viewmodel mit [UIHint("{name of editor template}")]

[Required] // example of an annotation you might want to handle 
[UIHint("Datepicker")] 
public DateTime SelectedDate { get; set; } 

die Eigenschaft mit EditorFor Render, wird diese auf die richtige Vorlage versenden

@Html.EditorFor(m => m.SelectedDate) 
Verwandte Themen