none
ASP.NET MVC: Datum als URL-Parameter RRS feed

  • 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
    Dienstag, 3. Dezember 2013 11:00

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.

    Dienstag, 3. Dezember 2013 15:32
  • 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
    Donnerstag, 5. Dezember 2013 18:11
  • *****************************************************************************************************

    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-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Dienstag, 11. März 2014 19:53