Mam problem z wyświetleniem jedynej części daty DateTime w polu tekstowym za pomocą TextBoxFor <,> (wyrażenie, htmlAttributes).
Model oparty jest na Linq2SQL, pole to DateTime na SQL oraz w modelu Entity.
Nie powiodło się:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Ta sztuczka wydaje się być nieaktualna, każda wartość ciągu w obiekcie htmlAttribute jest ignorowana.
Nie powiodło się:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Chciałbym przechowywać i wyświetlać tylko część daty w widoku szczegółów / edycji, bez części „00:00:00”.
asp.net-mvc
Kronos
źródło
źródło
@Html.EditorFor(m => m.IssueDate)
a formatowanie w modelu jest stosowane jako,[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
ale data jest nadal wyświetlana jako01/01/0001 12:00:00 AM
MVC4 rozwiązało ten problem, dodając nowe
TextBoxFor
przeciążenie, które przyjmuje parametr formatu ciągu. Możesz teraz po prostu to zrobić:Istnieje również przeciążenie, które pobiera atrybuty HTML, dzięki czemu można ustawić klasę CSS, ustawić datowniki itp.
źródło
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
atrybut modelu . Cieszę się, że w TextBoxFor jest przynajmniej przesłonięcie (i że mnie o tym powiadomiłeś).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
Ustawiłem tak, ale na httpPost dostaję dane takie jak MM.dd.rrrr. Jak to rozwiązać?input[type=date]
specyfikacji wymaga"{0:yyyy-MM-dd}"
formatu.źródło
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
Lub użyj nietypowych pomocników:
źródło
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
To zadziałało dla mnie.
źródło
Nie bój się używać surowego HTML.
źródło
TextBoxFor
aniEditorFor
sformatować wartości. Zobacz moje pytanie: TextBoxFor pomocnik miesza dzień i miesiąc w datachTL; DR;
Aplikacja
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
nie zadziałała dla mnie!Wyjaśnienie:
Aby wyświetlić właściwość daty modelu, używając
Html.TextBoxFor
:Właściwość Data klasy modelu:
Po stronie modelu nic więcej nie jest potrzebne.
W Razor:
Wyjaśnienie:
Data typu
input
elementu HTMLdate
musi być sformatowana zgodnie z ISO8601 , czyli:yyyy-MM-dd
Z mojego doświadczenia wynika, że język nie jest określony przez
Accept-Language
nagłówek, ale przez język wyświetlania przeglądarki lub język systemu operacyjnego.źródło
Możesz również użyć atrybutów HTML 5, stosując adnotację danych:
Problem polega jednak na tym, że umożliwia on wybieranie dat specyficzne dla przeglądarki dla przeglądarek HTML 5. Nadal potrzebujesz własnego selektora dat dla przeglądarek bez obsługi, a następnie musisz upewnić się, że selektor dat nie pojawia się oprócz przeglądarki (Modernizr może to zrobić łatwo) lub ukryć przeglądarkę, jeśli tak się dzieje (skomplikowane i ja nie wiem jak wiarygodne były moje metody).
W końcu poszedłem z Alexem, ponieważ moje obecne środowisko nie ma Modernizr, ale gdyby tak było, użyłbym tego do warunkowego pokazywania mojego selektora danych tylko, jeśli przeglądarka go nie obsługuje.
źródło
Dla mnie musiałem zachować,
TextboxFor()
ponieważ użycieEditorFor()
zmienia typ danych na dotychczasowy. Który w Chrome dodaje wbudowany moduł wyboru daty, który spieprzył narzędzie wyboru jQuery, którego już używałem. Tak więc, aby nadal używaćTextboxFor()
AND wypisywać tylko datę, możesz to zrobić:źródło
Atrybut DisplayFormat nie działał dla mnie w żadnej formie po pierwszym załadowaniu. Zamiast tego utworzyłem EditorTemplate:
źródło
Edytor szablonów będzie działał wyłącznie do celów wyświetlania. Jeśli używasz tego samego edytora (co ma sens, ponieważ jest to edytor) i podałeś wartość taką jak 31/01/2010 - pojawi się komunikat o błędzie informujący, że format jest nieprawidłowy.
źródło
Używam Globalizacji, więc pracuję z wieloma formatami dat, więc używaj następujących:
Spowoduje to automatyczne dostosowanie formatu daty do ustawień regionalnych przeglądarki.
źródło
Pamiętaj, że wyświetlanie zależy od kultury. I chociaż w większości przypadków wszystkie inne odpowiedzi są poprawne, nie działało to dla mnie. Problem z kulturą spowoduje również różne problemy z próbnikiem daty jQuery, jeśli jest dołączony.
Jeśli chcesz wymusić ucieczkę formatu
/
w następujący sposób:Jeśli nie uciekł dla mnie, pokazuje
08-01-2010
vs. oczekiwany08/01/2010
.Ponadto, jeśli nie został dodany, jpuźnik wyboru daty wybierze inną domyślną datę, w moim przypadku tak było
May 10, 2012
.źródło
Jeśli używasz selektora daty Bootstrap, możesz po prostu dodać atrybut data_date_format, jak poniżej.
źródło
// data i godzina wyświetlana w datePicker to 11/24/2011 12:00:00 AM
// możesz podzielić to na spację i ustawić wartość tylko na datę
Scenariusz:
Narzut:
Ma nadzieję, że to pomoże ..
źródło
Pewnie możesz użyć Html.EditorFor. Ale jeśli chcesz użyć TextBoxFor i użyć formatu z atrybutu DisplayFormat, możesz użyć go w następujący sposób:
lub utwórz następne rozszerzenie:
źródło
Po prostu dodaj obok swojego modelu.
źródło
Podczas korzystania z pomocników tagów w programie ASP.NET Core format musi zostać określony w formacie ISO. Jeśli nie zostanie określony jako taki, powiązane dane wejściowe nie będą wyświetlane poprawnie i będą wyświetlane jako mm / dd / rrrr bez wartości.
Model:
Widok:
Format można również określić w widoku za pomocą atrybutu formatu asp.
Wynikowy kod HTML będzie wyglądał następująco:
źródło
Możesz użyć poniższego kodu, aby wydrukować czas w formacie GG: mm , w moim przypadku Typ właściwości to TimeSpan Więc wartość jest w formacie GG: mm: tt, ale muszę pokazać w powyższym formacie tj. GG: mm
źródło
Jeśli nalegasz na użycie
[DisplayFormat]
, ale nie korzystasz z MVC4, możesz użyć tego:źródło