Fragensteller
ASP.NET MVC: Datum als URL-Parameter

Allgemeine Diskussion
-
Hallo Wissende,
habe eine deutschsprachige Webseite, die zwei Felder zur Eingabe eines Datumsbereiches ermöglichen.
Diese Filter werden als URL-Parameter an die gleiche Seite per Get übergeben:
<form action="/Buchungen" method="get"> <div> Startdatum: <input class="datepicker" id="Startdatum" name="Startdatum" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="Startdatum" data-valmsg-replace="true"></span> Endedatum: <input class="datepicker" id="Endedatum" name="Endedatum" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="Endedatum" data-valmsg-replace="true"></span> <input class="submit" type="submit" value="Filtern" /> </div> </form>
Wenn ich die Seite folgendermaßen fortsende
/Buchungen?Startdatum=13.01.2010&Endedatum=31.01.2010
erhalte ich die deutschen Fehlermeldungen, dass das Datum umgültig sei.
Wenn die beiden Datumswerte englisch interpretiert werden können, beispielsweise
/Buchungen?Startdatum=01.01.2010&Endedatum=08.01.2010
erhalte ich alle Werte zwischen dem 01.01.2010 und 01.08.2010, was dann beim Paging zu
/Buchungen?Startdatum=01%2F01%2F2010%2000%3A00%3A00&Endedatum=08%2F01%2F2010%2000%3A00%3A00
führt.
Wie also kann ich sicherstellen, dass das Datum als URL-Parameter deutsch bleibt und (viel wichtiger) als deutsch interpretiert wird?
Vielen Dank
KonFiDa
- Bearbeitet KonFiDa Dienstag, 3. Dezember 2013 13:05
- Typ geändert Ciprian Bogdan Dienstag, 11. März 2014 19:53
Alle Antworten
-
Hallo,
wie genau verarbeitest du denn die Daten?Unter .NET hat der DateTime-Typ für die Parse-Methode eine Überladung, die eine Kultur annimmt:
DateTime.Parse("DATUM", new System.Globalization.CultureInfo(1031));//1031 = Deutsch
Ich kenne mich nur wenig mit ASP.NET aus, aber wenn ich ?Test=08%2F01%2F2010%2000%3A00%3A00 an eine Seite im localhost anhänge und den Query auslese, dann erhalte ich 08/01/2010 00:00:00.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Hallo Koopakiller,
habe deine Anregungen aufgegriffen und verschiedene Varianten durchgespielt, allerdings ohne Erfolg.
Wenn ich dem
Startdatum: <input class="datepicker" id="Startdatum" name="Startdatum" type="text" value="" />
per ViewBag ein Datum (egal ob als DateTime oder String) im Format 31.12.2010 übergebe, bekomme ich die Fehlermeldung, dass dies kein gültiges Datum sei, wobei ich allerdings nicht weiß, wer diese Fehlermeldung veranlasst.
Übergebe ich ein Datum im Format "2010-12-31" wird es für die Abfrage korrekt ausgewertet, aber genau so in dem <input> dargestellt (diesmal ohne Fehlermeldung) - das wollen aber die Anwender nicht.
Du hast schon richtig festgestellt, dass 08%2F01%2F2010%2000%3A00%3A00 das encodierte HTML ist. Dies wird durch die Paginierung, genauer durch den dortigen HTML-Helper erzeugt.
Irgendwie habe ich das Gefühl, dass hier ständig irgendwelche Datumskonvertierungen vorgenommen werden, aber ich nicht weiß, wann und von wem.
Ich könnte Beispielscode gebrauchen, bei der eine deutsch lokalisierte Seite, die das deutsche jQuery UI DatePicker verwendet - mit und ohne Paginierung (PagedList) funktioniert - ich bekomme es nicht hin :-(
Vielen Dank
KonFiDa
- Bearbeitet KonFiDa Donnerstag, 5. Dezember 2013 18:12
-
*****************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
*****************************************************************************************************Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.