zeigt nur das Datum in @Html."EditorFor" Helfer
Ich versuche zu füllen @Html.EditorFor
Helfer. Habe ich eine view-Modell mit den unten Eigentum
[DataType(DataType.Date, ErrorMessage="Date only")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
public DateTime? YearBought { get; set; }
und meine Helfer eingerichtet ist als unten (a)
@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought, new { @type = "date" })
Habe ich auch schon versucht (b)
@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought.Value.Date)
Mithilfe der oben beschriebenen format (a) wird nichts angezeigt. Mit dem obigen format (b) 12/05/2014 00:00:00
wird angezeigt in der textbox format.
Ich versuche zu erreichen, ein datepicker-format ohne Uhrzeit angezeigt
Habe ich überprüft eine Reihe weiterer Fragen, kann aber nicht sehen, was habe ich anders getan.
Wenn ich mir in meine Datenbank, ist der Wert speichern als 2014-05-12
und wenn ich speichern den Wert der "EditorFor" Helfer erzeugt die erforderlichen Eingabe-Einrichtung
Fragen überprüft
erste zweite Dritte....die Liste geht weiter
BEARBEITEN
gerade öffnete sich die console in chrome dev tools und so diese Meldung
Den angegebenen Wert "12/05/14" entspricht nicht dem erforderlichen format "yyyy-MM-dd"
Dachte ich DisplayFormat(DataFormatString = "{0:dd/MM/yy}"
zu definieren, wie die Anzeige von Datum?
@type
? in @Html.EditorFor(model => model.YearBought, new { @type = "date" })
können Sie nicht angeben, htmlattributes wenn Sie "EditorFor" also einfach nur neugierigbisher war ein allerletzter Versuch, es zu schaffen, keine andere Logik als die, fürchte ich 🙁
Verwandte: stackoverflow.com/questions/15943797/...
InformationsquelleAutor tony09uk | 2015-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie im ISO-format bei der Verwendung von
type="date"
Diese Anzeige erscheint das Datum in den Browsern Kultur.
Hinweis: es besteht keine Notwendigkeit zum hinzufügen von
@type = "date"
. DieEditorFor()
- Methode hinzufügen, dass wegen derDataType
Attribut. Beachten Sie auch, dasstype="date"
wird nur unterstützt in Chrome (FireFox und IE wird, generieren Sie einfach eine normale textbox)Wenn Sie wollen, um den format
dd/MM/yyyy
im standard-Textfeld, dann können SieDa
EditorFor()
nicht unterstützt, die syntax. Alles, was Sie brauchen, ist@Html.TextBoxFor(m => m.YearBought)
- dieEditorFor() method respects values in the
Datentyp` undDisplayFormat
AttributeVerwenden
@Html.EditorFor()
müssen Sie das format angeben, wieyyyy-MM-dd
, nicht, wie es ist gezeigt, dassTextBoxFor
vor. Wie Ashish, es könnte verwirren einige Leute zu denken, können Sie das format fürEditorFor
- du hast Recht, das können Sie nicht. Aber nur tun@Html.EditorFor(m => m.YearBought)
ist definitiv nicht genug, auch mit den Modell-Parametern. Siehe meine Antwort: stackoverflow.com/questions/33247295/...InformationsquelleAutor
Ich würde dein view-model-s
YearBought
Eigenschaft einerString
für die einfachste manipulation. Kann der server das Datum zu formatieren, kann es das parsing auf postback, und Sie können weiterhin dieDataType.Date
Daten Anmerkung für die jQuery Validierung. Damit ist auch sichergestellt, dass der angezeigte Wert genau das, was Sie wollen, bevor Sie eingereicht, um die Ansicht.InformationsquelleAutor ps2goat
Alternative zu dem HTML-Attribut type können Sie eine
EditorTemplate
im MVC zu setzen, das markup, CSS-und JS benötigt, um das Rendern einer benutzerdefinierten editor für eine bekannte C# - Datentyp wieDateTime
.Hier ist eine Exemplarische Vorgehensweise für das erstellen eines benutzerdefinierten 'EditorTemplate" in MVC (zwar nicht für ein Date-Datentyp, aber das Konzept ist das gleiche)
InformationsquelleAutor Bishoy
So wie es in Stephen ' s Antwort, die Sie haben, um Ihre Formate übereinstimmung zwischen den Variablen in Ihrem Modell zu dem, was in der Ansicht dargestellt, und es sollte von der
yyyy-MM-dd
(ISO -) format, unabhängig davon, wie Sie wirklich wollen, um das Datum anzuzeigen:- Und er hat Recht, da haben wir
[DataType(DataType.Date)]
werden, brauchen wir nicht@type = date
in unseremHtmlAttributes
auf der Ansicht.Wo meine Antwort unterscheidet sich von seinem ist, wie Sie tatsächlich anwenden, wird der Wert aus dem Modell, um die Kontrolle über die Anzeigen. Da
YearBought
ist einNullable<DateTime>
wir haben, um es mit seinem Wert eine bestimmte Art und Weise, mit.Value
:Aufmerksamkeit um die
.ToString("yyyy-MM-dd")
. Es geht nicht um die Anzeige in der box so, aber - zumindest für mich - wahrscheinlich, weil meine US-Regional-Einstellungen auf meinem computer übernehmen, und zeigen Sie Sie alsMM/dd/yyyy
unabhängig. Dies kann etwas verwirren, aber es ist besser, nur "tun" und sich nicht darum kümmern.Wenn
YearBought
war nur geradeDateTime
statt einerDateTime?
wäre es ohne die.Value
:value
Attribut bei VerwendungHtmlHelper
Methoden (es sei denn, Sie versuchen zu vermasseln model binding).Mein Modell verbindlich war schon verkorkst, weil es nicht funktioniert ohne diese. Tun, was ich Tat, war die einzige Sache, die ich war in der Lage zu tun, um es zu arbeiten. Ich habe dies geschrieben, weil ich mir vorstellen kann, könnte es passieren, jemand anderes, als gut.
Der Sie haben etwas anderes verursacht es. Alle
HtmlHelper
Methoden erzeugen die Formular-Steuerelemente richtig eingestelltvalue
Attribut durch die erste Lektüre vonModelState
, dann dieViewDataDictionary
und schließlich von der tatsächlichen Modell Wert.Denke nicht so. Ich habe eine ViewModel-ich war mit, die genauso aussieht wie oben.
myViewModel.startdt = DateTime.Now;
Reichte Sie meiner Ansicht nach mit einerreturn View("MyView", myViewModel);
und hatteusing @model TestSite.ViewModels.MyViewModel
an der Spitze. Alle meineEditorFor()
Boxen waren in Ordnung und die Buchung von meinem Modell, nachdem ein Formular postback, aber dieEditorFor()
denen ich war, Füllung mit dates waren einfach nur "mm/dd/yyyy" wenn die Einstellung nicht eine@Value
. Ich bin nicht die einzige Antwort, um jemals sagen zu verwenden, die, by the way: stackoverflow.com/questions/15943797/...Noch eine falsche Antwort von einem mvc-Anfänger, die nicht wissen, was Sie tun oder wie die
HtmlHelper
Methoden arbeiten (ohne zu sehen, dein code ist alles, was ich tun kann, ist, erraten, die Sie versuchen, ändern Sie den Wert im controller nachdem ein Wert Hinzugefügt wurdeModelState
)InformationsquelleAutor vapcguy
Müssen Sie im ISO-format bei der Verwendung von
type="date"
Diese Anzeige erscheint das Datum in den Browsern Kultur.
Hinweis: es besteht keine Notwendigkeit zum hinzufügen von
@type = "date"
. DieEditorFor()
- Methode hinzufügen, dass wegen derDataType
Attribut. Beachten Sie auch, dasstype="date"
wird nur unterstützt in Chrome (FireFox und IE wird, generieren Sie einfach eine normale textbox)Wenn Sie wollen, um den format
dd/MM/yyyy
im standard-Textfeld, dann können SieEditorFor()
nicht unterstützt, die syntax. Alles, was Sie brauchen, ist@Html.TextBoxFor(m => m.YearBought)
- dieEditorFor() method respects values in the
Datentyp` undDisplayFormat
Attribute@Html.EditorFor()
müssen Sie das format angeben, wieyyyy-MM-dd
, nicht, wie es ist gezeigt, dassTextBoxFor
vor. Wie Ashish, es könnte verwirren einige Leute zu denken, können Sie das format fürEditorFor
- du hast Recht, das können Sie nicht. Aber nur tun@Html.EditorFor(m => m.YearBought)
ist definitiv nicht genug, auch mit den Modell-Parametern. Siehe meine Antwort: stackoverflow.com/questions/33247295/...Ich würde dein view-model-s
YearBought
Eigenschaft einerString
für die einfachste manipulation. Kann der server das Datum zu formatieren, kann es das parsing auf postback, und Sie können weiterhin dieDataType.Date
Daten Anmerkung für die jQuery Validierung. Damit ist auch sichergestellt, dass der angezeigte Wert genau das, was Sie wollen, bevor Sie eingereicht, um die Ansicht.Alternative zu dem HTML-Attribut type können Sie eine
EditorTemplate
im MVC zu setzen, das markup, CSS-und JS benötigt, um das Rendern einer benutzerdefinierten editor für eine bekannte C# - Datentyp wieDateTime
.Hier ist eine Exemplarische Vorgehensweise für das erstellen eines benutzerdefinierten 'EditorTemplate" in MVC (zwar nicht für ein Date-Datentyp, aber das Konzept ist das gleiche)
So wie es in Stephen ' s Antwort, die Sie haben, um Ihre Formate übereinstimmung zwischen den Variablen in Ihrem Modell zu dem, was in der Ansicht dargestellt, und es sollte von der
yyyy-MM-dd
(ISO -) format, unabhängig davon, wie Sie wirklich wollen, um das Datum anzuzeigen:- Und er hat Recht, da haben wir
[DataType(DataType.Date)]
werden, brauchen wir nicht@type = date
in unseremHtmlAttributes
auf der Ansicht.Wo meine Antwort unterscheidet sich von seinem ist, wie Sie tatsächlich anwenden, wird der Wert aus dem Modell, um die Kontrolle über die Anzeigen. Da
YearBought
ist einNullable<DateTime>
wir haben, um es mit seinem Wert eine bestimmte Art und Weise, mit.Value
:Aufmerksamkeit um die
.ToString("yyyy-MM-dd")
. Es geht nicht um die Anzeige in der box so, aber - zumindest für mich - wahrscheinlich, weil meine US-Regional-Einstellungen auf meinem computer übernehmen, und zeigen Sie Sie alsMM/dd/yyyy
unabhängig. Dies kann etwas verwirren, aber es ist besser, nur "tun" und sich nicht darum kümmern.Wenn
YearBought
war nur geradeDateTime
statt einerDateTime?
wäre es ohne die.Value
:value
Attribut bei VerwendungHtmlHelper
Methoden (es sei denn, Sie versuchen zu vermasseln model binding).HtmlHelper
Methoden erzeugen die Formular-Steuerelemente richtig eingestelltvalue
Attribut durch die erste Lektüre vonModelState
, dann dieViewDataDictionary
und schließlich von der tatsächlichen Modell Wert.myViewModel.startdt = DateTime.Now;
Reichte Sie meiner Ansicht nach mit einerreturn View("MyView", myViewModel);
und hatteusing @model TestSite.ViewModels.MyViewModel
an der Spitze. Alle meineEditorFor()
Boxen waren in Ordnung und die Buchung von meinem Modell, nachdem ein Formular postback, aber dieEditorFor()
denen ich war, Füllung mit dates waren einfach nur "mm/dd/yyyy" wenn die Einstellung nicht eine@Value
. Ich bin nicht die einzige Antwort, um jemals sagen zu verwenden, die, by the way: stackoverflow.com/questions/15943797/...HtmlHelper
Methoden arbeiten (ohne zu sehen, dein code ist alles, was ich tun kann, ist, erraten, die Sie versuchen, ändern Sie den Wert im controller nachdem ein Wert Hinzugefügt wurdeModelState
)Index()
, die nichtreturn View(myViewModel);
. Klicken Sie auf die Schaltfläche Speichern, nachdem ich eine Datei hochladen, startetUpload()
liest, Eigenschaften & - setsmyViewModel.startdt = DateTime.Now;
dann macht esreturn View("Index", myViewModel);
zu aktualisieren das ursprüngliche Modell, das mit meinen neuen Werten. Wie gesagt, nur die Termine haben Probleme.