J'utilise l'attribut DataType.Date sur mon modèle et un EditorFor à mon avis. Cela fonctionne bien dans Internet Explorer 8 et Internet Explorer 9 , mais dans Google Chrome, il affiche un sélecteur de date et au lieu d'afficher la valeur, il affiche simplement "Mois / Jour / Année" en texte gris délavé.
Pourquoi Google Chrome n'affiche-t-il pas la valeur?
Modèle:
[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }
Vue:
<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
la source
[DataType(DataType.Date)]
pour ne pas avoir à marquer toutes ces propriétés séparément avec le risque d'en manquer?Dans MVC5.2, ajoutez Date.cshtml au dossier ~ / Views / Shared / EditorTemplates:
la source
En complément de la réponse de Darin Dimitrov:
Si vous souhaitez que cette ligne particulière utilise un certain format (différent du format standard), vous pouvez utiliser dans MVC5:
la source
@
en a au début, ça a@Value = @Model.Property...
encore besoin de ça@
? Voulez-vous dire justenew { Value = Model.Property...
?Dans MVC 3, j'ai dû ajouter:
parmi les utilisations lors de l'ajout de propriétés:
Surtout si vous ajoutez ces propriétés dans un fichier .edmx comme moi. J'ai trouvé que par défaut les fichiers .edmx ne l'ont pas en utilisant donc ajouter seulement des propriétés n'est pas suffisant.
la source
Si vous supprimez
[DataType(DataType.Date)]
de votre modèle, le champ de saisie dans Chrome est rendu commetype="datetime"
et n'affichera pas non plus le sélecteur de date.la source
date
. L'utilisationdatetime
comme solution de contournement est inappropriée, car elle ne représente pas sémantiquement les données.J'ai toujours eu un problème avec le passage du format aaaa-MM-jj, mais je l'ai contourné en modifiant le Date.cshtml:
la source
string.Format("{0}/{1}/{2}")
d'obtenir ledd/mm/yyyy
format, et cela fonctionne très bien, j'ai utilisé la première méthode de base de données mais DisplayFormat n'a pas fonctionné avec une classe partielle, je ne sais pas pourquoi ?, de toute façon, si nécessaire, essayez cette méthode, je n'ai pas t essayer mais si quelqu'un avait besoin, j'espère que cela aideRépondre à MVC4 DataType.Date EditorFor n'affichera pas la valeur de date dans Chrome, très bien dans IE
Dans le modèle, vous devez avoir le type de déclaration suivant:
OU
Vous n'avez pas besoin d'utiliser l'attribut suivant:
Au Date.cshtml utilisez ce modèle:
S'amuser! Cordialement, Blerton
la source
DisplayFormat
attribut 2) changez le test pour vérifier si le type de navigateur est chrome, puis faites@Html.EditorFor(m=>m.EstPurchaseDate)
3) Sinon faites@Html.TextBox("EstPurchaseDate", dt.ToString("MM/dd/yyyy"))
Remarque: sur # 2, une meilleure vérification serait si le navigateur comprend HTML5, mais je ne sais pas comment faire.Si vous avez besoin de contrôler le format de la date (en d'autres termes, pas seulement le format aaaa-mm-jj est acceptable), une autre solution pourrait être d'ajouter une propriété d'assistance de type chaîne et d'ajouter un validateur de date à cette propriété et liez à cette propriété sur l'interface utilisateur.
Et voici un validateur de date:
la source