2010-02-10 2 views
5
<%= Html.ActionLink(Html.Encode("user3"), 
    "Filter", new { controller = "Search", 
    userName = "user3", 
    dateFrom = DateTime.Now.AddDays(-2).ToString(), 
    dateTo = DateTime.Now.ToString() })%> 

E 'valutato a questo link:Beta ASP.NET MVC 2: conversione DateTime. Bug o no?

http://localhost:60357/Search/Filter?userName=user3&dateFrom=08.02.2010%2023%3A21%3A33&dateTo=10.02.2010%2023%3A21%3A33 

devo notare che le impostazioni di globalizzazione di Windows sono impostati per il formato della data europea. Così 08.02.2010 = 8 febbraio 2010.

Ma nel metodo di azione

public ActionResult Filter(String userName, DateTime dateFrom, DateTime dateTo) 

DateFrom ha il valore 02.08.2010 = 2 agosto 2010

E 'errato. È un bug del framework? Quindi qual è il modo migliore per risolvere questo problema? Non voglio scrivere un monkeypatch se possibile.

+1

+1 per 'monkeypatch'. – womp

risposta

5

Non utilizzare DateTime.Now.ToString(). Usa DateTime.Now.ToString("s") (formato ISO 8601 - aaaa-MM-ggTHH: mm: ss) Esiste un solo modo di interpretarlo, quindi non è mai sbagliato, almeno finché non inizi a gestire i fusi orari! (Considerare il formato "u" per quello.)

+0

Hai decisamente ragione! Grazie! – Overdose