web-dev-qa-db-fra.com

Comment utiliser Html.TextBoxFor avec type d'entrée = date?

Je veux implémenter dans mon code. À cette fin, j'ai les éléments suivants:

@Html.TextBoxFor(model => model.CreationDate, new { @type = "date" })

Ce code génère le code HTML suivant:

<input data-val="true" data-val-date="The field CreationDate must be a date." 
             data-val-required="The CreationDate field is required." 
             id="CreationDate" name="CreationDate" type="date" 
             value="09/05/2012 15:02:19">

La valeur n'apparaît pas sur la page Web car type = "date" attend des données au format AAAA-MM-JJ. 

J'ai essayé de formater la date, mais ça explose, bien sûr.

@Html.TextBoxFor(model => model.CreationDate.ToString("YYYY-MM-DD"), 
                 new { @type = "date" })

Comment utiliser la méthode TextBoxFor pour correctement afficher la construction?

CreationDate est de type DateTime.

17
AngryHacker

Essaye ça;

@Html.TextBoxFor(model => model.CreationDate,
           new { @type = "date", @Value = Model.CreationDate.ToString("yyyy-MM-dd") })

Vous devez gérer null lors de la définition de la valeur.

OR

Si vous pouvez changer la Model, vous pouvez essayer ceci;

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime CreationDate{ get; set; }

et à votre avis, vous pouvez utiliser EditorFor helper.

@Html.EditorFor(model => model.CreationDate, new { @type = "date" })
48
Saranga

Modèle de conception: 

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime CreationDate{ get; set; }

Voir la conception: 

<%: Html.EditorFor(m => m.CreationDate, new { @type = "date" }) %>
3
Wesley Kai Tian

J'ai fait quelque chose de similaire avec EditorFor et la bibliothèque bootstrap-datepicker: 

    <div class="input-prepend date" id="startDate" [email protected] data-date-format="m/d/yyyy">
        <span class="add-on"><i class="icon-calendar"></i></span>
        @Html.EditorFor(m => m.StartDate)            
    </div>
0
Bruno