2017-01-11 1 views
0

Ich habe eine ASP.NET MVC 5-Anwendung. Datumsfelder sind sehr produktiv. Die Dinge funktionieren und verhalten sich ordnungsgemäß, aber der W3C Markup Validator beschwert sich über die Datum Textfelder mit einem unangemessenen type Attributwert.Wie ändert man type = "datetime" in HTML5 Standardtyp = "Datum" bei der Verwendung von MVC EditorFor ohne benutzerdefinierte Editor-Vorlage?

Ich bin Rendern der input ‚s für DateTime oder NULL festlegbare DateTime Eigenschaften mit Hilfe der EditorFor Helfer:

@Html.EditorFor(model => model.BeginDate) 

Dies wird immer übersetzt:

<input type="datetime"> 

Der "Datumzeit" Wert des type Attribut ist nicht mehr ein Standard gemäß der W3C HTML5 Forms standard. Die unterstützte Datum/Zeit-Typen sind:

  • Datum - Datum (Jahr, Monat, Tag) ohne Zeitzone
  • Zeit - eine Zeit (Stunde, Minute, Sekunde, Sekundenbruchteile) ohne Zeitzone

ich nicht wirklich einen benutzerdefinierten Editor-Vorlage erstellen möchten, da die Standard-Editor-Vorlage MVC perfekt funktioniert, außer dem type="datetime" Attributwert ist nicht-Standard.

Wie kann ich das Standardverhalten des EditorFor Methode für Datetime überschreiben Objekte so schafft es <input type="date"> Elemente ohne meine eigenen Editor Template erstellen?

+0

Dies ist kein Duplikat https://stackoverflow.com/questions/7124434/display-only-date-and-no-time. Der Link spricht nur über die Anzeige einer kurzen Datumszeichenkette. Es hat nichts damit zu tun, dass das Input-Tag den richtigen html5-Datentyp hat. – Fran

+0

@EhsanSajjad: Ich stimme Fran zu. Das hat nichts mit dem Display zu tun, und alles, was mit dem gerenderten HTML zu tun hat. –

+0

dann stimmen für wieder öffnen :) –

Antwort

3

Anmerken Ihr Modell Feld mit dem Datentyp Attribut

public class Model1 
{ 
    [DataType(DataType.Date)] 
    public DateTime BegineDate { get; set; } 
} 
+0

Welchen Namespace ist die 'DataType' enum in? Ich kann dieses Symbol in meinem aktuellen Projekt nicht in einen Namespace auflösen. Ich frage mich, ob ich eine Assembly-Referenz vermisse. –

+0

mit System.ComponentModel.DataAnnotations; – Fran

+0

Macht nichts. Ich habe es herausgefunden. Ich verwende NHibernate, die eine Klasse NHibernate.Type.DataType hat, und dann gibt es System.ComponentModel.DataAnnotations.DataType. Mein Problem ist der Zusammenstoß von Namespaces. Visual Studio ist gerade kurz auf meine komisch geworden. –

Verwandte Themen