1
votes

DateTime valeur par défaut ASP.net core

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.

 Voici une capture d'écran de ce à quoi il ressemble

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 commentaires

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é


3 Réponses :


0
votes

É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>


3 commentaires

Ne devrait pas vraiment avoir besoin de faire ; 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 .



0
votes

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;


0 commentaires

2
votes

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.


1 commentaires

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