Obtenez des attributs de validation dans un modèle d'éditeur MVC3
-
12-11-2019 - |
Question
J'écris un modèle d'éditeur pour entrer une date et une heure composées de trois champs.
- Une zone de texte avec un jQuery UI DatePicker.
- Une zone de texte pour saisir l'heure.
- Une entrée cachée qui est mise à jour avec la chaîne de date et de heure complète via JavaScript.
L'idée est d'avoir des champs distincts pour la date et le temps affichées à l'utilisateur, alors qu'il n'y a qu'un seul champ lié au modèle. Chaque fois que les champs affichés sont modifiés, le champ caché est mis à jour via JavaScript.
@model System.DateTime?
<span class="datetime-editor">
<input class="datepicker" value="@(Model.HasValue ?
Model.Value.Date.ToString() : string.Empty)" readonly="readonly"/>
<input class="time" value="@(Model.HasValue ?
Model.Value.TimeOfDay.ToString() : string.Empty)"/>
@Html.HiddenFor(d => d)</span>
Le JavaScript pour configurer le DatePicker et copier les valeurs dans le champ caché.
$(".datepicker").datepicker();
$(".datetime-editor").find("input").change(function () {
var date = $(this).parent().find(".datepicker").val();
var time = parseTime($(this).parent().find(".time").val());
if (date != "" && time != null) {
$(this).siblings(".datetime-result").val(date + " " + time);
}
else {
$(this).siblings(".datetime-result").val("");
}
});
Mon problème est les attributs de validation. Ils sont tous présents dans la balise d'entrée cachée:
<input name="StartDateTime" id="StartDateTime" type="hidden"
data-val-required="Start date and time are required" data-val="true" value=""/>
J'aimerais attraper en quelque sorte le généré data-val*
Attributs et ajoutez-les à la place aux entrées visibles. À travers ViewData.ModelMetaData
Je peux savoir si le champ est requis ou non, mais je devrais ensuite réinventer la logique pour créer le data-val-required
attribut. Je voudrais obtenir les attributs générés à la place.
Pas de solution correcte