DateTime de Split à date et heure dans ASP.NET MVC
-
10-10-2019 - |
Question
J'ai lu poste Scott Hanselman sur ce sujet. J'ai trouvé une autre article qui semble être une approche plus simple. La deuxième dont j'ai décidé d'essayer.
Cependant, la première partie dans la création des EditorTemplates ne fonctionne pas pour moi. Je copié DateTime.ascx et TimeSpan.ascx a l'auteur leur avait écrit. Ensuite, je partage les champs, à mon avis.
<div class="editor-label">
<%= Html.LabelFor(model => model.LeaveRequest.DateOfLeave)%>
</div>
<div class="editor-field">
<div class="date-container">
<%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date)%>
</div>
<div class="time-container">
<%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.TimeOfDay)%>
</div>
<div class="clear">
<%= Html.ValidationMessageFor(model => model.LeaveRequest.DateOfLeave)%>
</div>
</div>
Le problème que j'ai est que le comportement que je reçois est pas le même que cet auteur a expliqué que devrait se produire. Voici une capture d'écran de mes résultats.
Je dois manquer quelque chose, mais je ne peux pas dire quoi. J'ai lu cet article plusieurs fois et ne peut pas voir ce que je suis absent. Je suppose qu'il doit y avoir quelque chose à dire pour nous le programme des nouvelles EditorTemplates, mais je ne sais pas comment.
La solution
Vous avez manqué le fait que la solution à la fois de Scott et la solution que vous lien vers ne pas faire:
<%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date) %>
Au lieu de cela ils utilisent:
<%= Html.EditorFor(model => model.LeaveRequest.DateOfLeave.Date) %>
Et puis utiliser un éditeur personnalisé pour limiter le champ juste la date (au lieu de la date et heure).
Faites défiler jusqu'à la Séparer la date / heure fields en-tête de l'article que vous lien et lire un peu plus sur les modèles de l'éditeur personnalisés.
Autres conseils
Vous pouvez également ajouter une valeur par défaut du côté client si vous le souhaitez.
<%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date,
new { @Value= DateTime.Now })%>
définit la valeur de Texbox initiale à la DateTime
actuelle mais vous pouvez évidemment le mettre à tout ce que vous aimez.