EditorFor(date): Comment faire pour afficher la zone de texte vide?
<%: Html.EditorFor(model => model.date)%>
Comment puis-je faire de ce code afficher une zone de texte vide lorsqu'il est chargé? De modèle.la date n'est pas nullable, donc toujours affiche une valeur non vide. Comment puis-je le forcer à démarrer avec une valeur vide?
Note: je ne veux pas en faire nullable parce que dans le vrai code, il est lié à un modèle de propriété qui doit avoir une valeur (BTW, j'ai un Required
annotation de données pour cette propriété). Il ne fait pas de sens pour la faire accepter les valeurs null. En la remplaçant par une date par défaut comme celle d'aujourd'hui n'est pas une option, ni parce que la question, dans ce cas, assurez-vous que l'utilisateur n'oubliez pas de activement préciser une date.
TIA.
OriginalL'auteur Serge Wautier | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Le problème est que si le Modèle.Date de la propriété n'est pas nullable alors il aura toujours une valeur. Dans le passé, j'ai créé un éditeur de modèle pour le type DateTime (qui utilise également le jquery sélecteur de date). Cela permet de gérer votre valeur vide pour lesquelles vous auriez probablement être à la recherche pour la date = DateTime.MinValue.
De sorte que votre éditeur de modèle devrait ressembler à quelque chose comme:
Pas besoin de vous soucier de la chaîne vide pour le nom, comme cela se rempli avec juste le html préfixe qui devrait suffire.
Cet article explique également comment créer de l'éditeur de modèle.
http://geekswithblogs.net/michelotti/archive/2010/02/05/mvc-2-editor-template-with-datetime.aspx
Personnellement j'aurais la date de mon point de vue modèle nullable mais pas sur mon modèle de domaine à l'aide de la validation entre
Marque, cela semble très intéressant. Pour l'essayer immédiatement. BTW, dans votre commentaire, vous l'avez lu dans mon esprit. C'est ce que j'allais faire en l'absence d'une solution sympa. Nitpickers peut même soutenir que seule la valeur null peut être associée à une chaîne vide. Pas DateTime.MinValue. Je dois dire que je suis en désaccord depuis une chaîne vide ne doit jamais toucher le dos du serveur: Il doit être écartée par la validation côté client.
OriginalL'auteur Mark
Dans votre modèle créer un frère ou une sœur de la propriété et de la décorer avec requis:
Dans votre vue de remplacer votre entrée avec :
OriginalL'auteur Jorge Goncalves
Je mettrais cela dans une
<td>
ou<div>
et ensuite utiliser l'id de la propriété à l'accès et à vide via jquery.Il y a peut être un moyen à l'aide d'un construit en MVC élément, mais je ne suis pas au courant.
Ici est un moyen rapide de violon qui vous explique le concept, de sorte que vous pouvez jouer avec si vous le souhaitez.
Je ne suis pas si sûr qu'il fait, mais je ne sais pas votre application! Je le vois comme un problème d'INTERFACE utilisateur, vous voulez un certain UI champ est vide au lieu de peuplé de la charge. Cela pourrait être accompli sur le côté serveur, que l'accès aux données ou de la logique métier (j'aime le modèle de vue des idées), ou le client de la couche présentation (à l'aide de la au-dessus de jquery). En termes de SoC votre pas vraiment l'achèvement des affaires ou de la logique d'accès aux données dans la couche de présentation, simplement en changeant la façon dont vous voulez un champ affiché, tombant ainsi dans la couche de présentation de l'omi. Mais c'est mon interprétation, pas le tien =)
mon interprétation est que vous ajoutez un div id et certains côté client code pour résoudre un problème côté serveur.
OriginalL'auteur JonVD
Quelques corrections à Jorge réponse:
ToNullible()
,DefaultIfNull()
etIsNull()
sont une extension pratique des fonctions:OriginalL'auteur toddmo
Vous pouvez utiliser une petite fonction jquery.
- Je résoudre mon problème comme ceci:
et à la fin de la page:
OriginalL'auteur Gelásio