Pour un projet étudiant, je souhaite ajouter une valeur par défaut - dans le champ de date (ReleaseDate) mais j'ai toujours un calendrier et la possibilité de choisir une date.
Mon code dans Models / Post.cs:
@model IEnumerable<Portal.Models.Post> @{ ViewData["Title"] = "Job Rice -"; } <!-- Image --> <section> <div class="container"> <div class="full-width-image"> <img src="img/background.jpg" alt=""> </div> </div> </section> <div class="text-center"> <h1><a asp-action="Create">Create new offer</a></h1> </div> @foreach (var item in Model) { <section> <div class="container"> <!-- Heading --> <div class="my-5"> </div> <!-- Grid row --> <div class="row"> <!-- Grid column --> <div class="col-sm-12 sm-12"> <!-- Card --> <div class="card"> <div class="card-header text-center colores"> <h4> <i class="fas fa-poll-h"></i> <a asp-action="Details" asp-route-id="@item.Id"> @Html.DisplayFor(modelItem => item.Title) </a></h4> </div> <!-- Card content --> <form class="card-body"> <div class="row"> <div class="col-sm-12"> <div class="text-center"> @Html.DisplayFor(modelItem => item.Description)</div> <div class="float-right"> @Html.DisplayFor(modelItem => item.ReleaseDate)</div> </div> <div> <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </div> </div> </form> </div> </div> </div> </div> </section> }
3 Réponses :
Étant donné que les vues Razor vous permettent toujours d'écrire du code HTML, vous pouvez essayer de définir le vôtre comme
public IActionResult Index() { var model = new Post() { ReleaseDate = DateTime.Today }; return View("View", model); }
il doit afficher la valeur actuelle du modèle comme point de départ de votre entrée, bien sûr, vous devez définir un avant de le transmettre à une vue:
<div class="form-group"> <label asp-for="ReleaseDate" class="control-label"></label> <input asp-for="ReleaseDate" class="form-control" value="@Model.ReleaseDate.ToString("yyyy-MM-dd")" /> <span asp-validation-for="ReleaseDate" class="text-danger"></span> </div>
Ne devrait pas vraiment avoir besoin de faire code >;
suffit, étant donné les annotations de données sur le modèle (mis à part l'espace supplémentaire qui ne devrait pas être au format) .
J'ai eu un petit problème en essayant cela. Je pense que les paramètres régionaux de formatage de la date pourraient être en jeu. J'inviterais OP à essayer les deux méthodes et voir ce qui fonctionne
L'assistant de balise doit générer une balise
. En supposant que c'est le cas, le seul format valide est aaaa-MM-jj
(une date courte ISO-8601) - tout le reste ne sera pas analysé correctement par les entrées de date natives .
Cela devrait instancier une valeur par défaut:
public System.DateTime ReleaseDate { get; set; } = System.DateTime.Now;
ou si vous avez également besoin de temps
public System.DateTime ReleaseDate { get; set; } = System.DateTime.Today;
Comme le souligne Tieson T. dans son commentaire, vous devez ajouter l'attribut "value" à la balise "input" de votre page rasoir:
<input asp-for="ReleaseDate" class="form-control" value="@DateTime.Today.ToString("yyyy-MM-dd")" />
Bien sûr, vous pouvez remplacer " DateTime.Today "avec autre chose.
Peu importe que votre navigateur affiche la date dans un format différent, vous devez utiliser celui-ci dans l'attribut value. Je viens de le tester dans une application ASP.NET Core 3.1 Razor et cela fonctionne.
Il me manquait le format de date dans la méthode ToString (). J'ai du sens puisque c'est ce que demande mon annotation de données
La définition de value aide-t-elle dès le départ?
Où exactement? Pouvez-vous donner l'exemple?
Vous devez probablement ajouter de la valeur. Par exemple. agit comme un espace réservé