7
votes

Mvc.net millisecondes se perdent lors de l'utilisation de HTML.Chésté sur une colonne DateTime LastUpdated pour la version suivante

Question en bref:

Comment faire Ceci dans mvc.net? P>

IM essaye d'utiliser une colonne DateTime dans une table SQL pour le suivi de la version ( Ceci en soi est proposé comme une solution pour réattacher une classe de données LINQ2SQL après avoir été réactivée par EditView pour la table) P>

mais maintenant, je n'ai pas trouvé ni changé. Sur le CTX.SUBMIT: P>

            <%= Html.Hidden("LastUpdate", Model.LastUpdate) %>                


0 commentaires

5 Réponses :


5
votes

Je pense que le problème est que l'écriture de la dernière heure de mise à jour dans un champ caché comme celui-ci sera simplement un Tostring à la date qui par défaut ne rendra par défaut pas les millisecondes. Vous pouvez essayer de raincre l'horodatage comme une valeur absolue, telle que des ticks: xxx

Vous pouvez ensuite reconstruire votre heure de temps de l'autre côté en convertissant la valeur de la valeur et en reconstruisant la date d'heure: < / p> xxx


0 commentaires

4
votes

Vous ne me croirez pas, mais essayez ceci: avant le retour sur votre contrôleur, faites une raison xxx pré>

, une personne sur la confiance infinie déciderait HTML.Choride garderait des valeurs "postées" Jeter les modifications. Même lorsqu'il est créé sur C # sur la même page. p>

Ce moyen simple que vous le supprimez de la modélisation de sorte qu'il attrape la nouvelle valeur au lieu de poster. P>

Certaines personnes indiquent le comportement par défaut, mais s'il vous plaît, je travaillais avec un Grille faite à la main avec une recherche intégrée de la société (entreprise / produits) et champ caché pour la clé des produits (longue). Changer la société postée sur la même page. P>

foreach (var s in ModelState.Keys.ToList())
                if (s.StartsWith("detalleProductos"))
                    ModelState.Remove(s);


0 commentaires

1
votes

Vous devez utiliser la propriété DateTime.Ticks pour obtenir les millisecondes.

Si vous utilisez une vueModel, vous pouvez définir une propriété sur celle qui stocke les tiques DateTime. Par exemple: xxx

Lorsque vous mappez votre entité sur votre modèle et que vous pouvez effectuer la conversion entre DateTime et les ticks dans le code de cartographie.

Votre La vue peut alors se lier à la propriété LastUpdatetictick. Cela vous permettra de toujours utiliser des expressions Lambda pour la liaison si vous le souhaitez.


0 commentaires

4
votes

Si vous ne voulez pas utiliser de ticks, Textboxfor fonctionnera si vous spécifiez le format de date et l'attribut HTML Hidden. xxx


0 commentaires

1
votes

Approche alternative: N'utilisez pas du tout une méthode d'aide à la balise, écrivez simplement la balise directement dans votre modèle de page et insérez la valeur formatée, y compris MS:

<input type="hidden" id="Created" name="Created" value="01/02/2019 13:09:46.927" />


2 commentaires

La spécification du format de date comme celle-ci peut être dangereuse lorsque le code qui analyse la chaîne de retour à une date d'heure s'attend au lieu de MM / DD au lieu de DD / MM. Le résultat pourrait être une valeur de date incorrecte.


@Nineberry C'est un bon point, cette méthode fonctionne pour moi car je suis en contrôle du code qui reçoit la chaîne de retour sur le serveur et que j'ai tendance à vérifier que les serveurs que je contrôlent utilisent des formats de date / heure britanniques partout. Mais vous avez raison de signaler le risque, d'autres peuvent préférer utiliser un format de date plus portable.