1
votes

Comment mettre à jour une propriété sur le modèle en fonction de la sélection de l'utilisateur?

Je dois mettre à jour la date d'expiration en fonction de l'action de l'utilisateur. Je veux gérer cela dans le javascript si possible au lieu de renvoyer un champ caché au contrôleur.

Dans le modèle, j'ai deux dates.

    document.getElementById("ExpirationDate").value = expireDate;

Dans le formulaire , J'affiche la date d'expiration actuelle et cette boîte de sélection déroulante

        <div class="control-group">
            <div class="controls col-md-6">
                @Html.HiddenFor(cm => cm.ExpirationDate, new { id = "ExpirationDate" }) @*hidden input so that POST will send the data back*@
                @Html.LabelFor(cm => cm.ExpirationDate)
                @Html.DisplayFor(cm => cm.ExpirationDate, new { @class = "form-control" })
            </div>
        </div>

L'objectif est de mettre à jour la date d'expiration avec la période choisie.

J'ai cette routine où je veux faire le changement, en cliquant sur le bouton Mettre à jour.

model.ExpirationDate = DateTime.Today + $selExpirationPeriod.value

Au lieu d'afficher la date d'expiration, il montre "[objet objet]"

J'ai besoin de quelque chose comme

function updateModel() {

    alert($('#ExpirationDate'));
    return true;
}

Je ne sais pas comment accéder à l'une de ces trois depuis javascript.

Résumé: ExpirationDate est une propriété du modèle qui sera conservé dans la base de données après son retour sur le serveur. Je préférerais gérer le calcul dans le client si je peux, simplement parce que je ne sais pas comment. Il semble que cela devrait être simple et que je devrais l'apprendre.

Mettre à jour
Résolu. J'ai dû ajouter le champ caché pour pouvoir renvoyer la valeur. En affichage uniquement, il n'est pas renvoyé.

                <div class="controls col-md-6">
                    <label for="selExpirationPeriod">Select the expiration period</label>
                </div>
                <div class="controls col-md-6">
                    <select id="selExpirationPeriod" class="form-control">
                        <option value=30>30 days</option>
                        <option value=90>90 days</option>
                        <option value=182>Half year</option>
                        <option value=365 selected>Year</option>
                    </select>
                </div>

Ensuite, j'ai dû mettre à jour le champ à partir de la routine.

    [DataType(DataType.Date)]
    public DateTime ExpirationDate { get; set; }

    [DataType(DataType.Date)]
    public DateTime LastUpdatedDate { get; set; }


4 commentaires

Voulez-vous mettre à jour la propriété côté serveur en fonction de l'option de date sélectionnée dans l'élément