Używam atrybutu DataType.Date w moim modelu i edytora ForFor w moim widoku. Działa to dobrze w Internet Explorerze 8 i Internet Explorerze 9 , ale w Google Chrome pokazuje selektor dat i zamiast wartości wyświetla tylko „Miesiąc / Dzień / Rok” wytartym szarym tekstem.
Dlaczego Google Chrome nie wyświetla wartości?
Model:
[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }
Widok:
<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
źródło
[DataType(DataType.Date)]
więc nie musiałbym oznaczać wszystkich tych właściwości osobno, z ryzykiem ich utraty?W MVC5.2 dodaj Date.cshtml do folderu ~ / Views / Shared / EditorTemplates:
źródło
Jako dodatek do odpowiedzi Darina Dimitrowa:
Jeśli chcesz, aby ta konkretna linia używała określonego (innego niż standardowy) formatu, możesz użyć w MVC5:
źródło
@
na początku, czy@Value = @Model.Property...
nadal tego potrzebujesz@
? Masz na myśli tylkonew { Value = Model.Property...
?W MVC 3 musiałem dodać:
wśród zastosowań podczas dodawania właściwości:
Zwłaszcza jeśli dodajesz te właściwości do pliku .edmx, tak jak ja. Odkryłem, że domyślnie pliki .edmx tego nie używają, więc dodawanie tylko proroctw nie wystarczy.
źródło
Jeśli usuniesz
[DataType(DataType.Date)]
ze swojego modelu, pole wprowadzania w Chrome zostanie zrenderowane jakotype="datetime"
i nie będzie też pokazywało datepicker.źródło
date
. Używaniedatetime
jako obejścia jest nieodpowiednie, ponieważ nie reprezentuje semantycznie danych.Nadal miałem problem z przekazaniem formatu rrrr-MM-dd, ale obejściłem go, zmieniając Date.cshtml:
źródło
string.Format("{0}/{1}/{2}")
uzyskaćdd/mm/yyyy
format i działa dobrze, użyłem pierwszej metody bazy danych, ale DisplayFormat nie działał z klasą częściową, nie wiem dlaczego ?, w każdym razie ktoś, jeśli to konieczne, wypróbował tę metodę, nie Próbuję, ale jeśli ktoś potrzebuje, mam nadzieję, że to pomożeOdpowiedz na MVC4 DataType.Date EditorFor nie wyświetla wartości daty w Chrome, dobrze w IE
W modelu musisz mieć następujący typ deklaracji:
LUB
Nie musisz używać następującego atrybutu:
W pliku Date.cshtml użyj tego szablonu:
Baw się dobrze! Pozdrawiam, Blerton
źródło
DisplayFormat
atrybutu 2) Zmień test, aby sprawdzić, czy typ przeglądarki to chrome, a następnie wykonaj@Html.EditorFor(m=>m.EstPurchaseDate)
3) W przeciwnym razie@Html.TextBox("EstPurchaseDate", dt.ToString("MM/dd/yyyy"))
uwaga: na # 2 lepszym sprawdzeniem byłoby, jeśli przeglądarka rozumie HTML5, ale nie wiem jak to zrobić.Jeśli potrzebujesz mieć kontrolę nad formatem daty (innymi słowy, nie tylko format rrrr-mm-dd jest dopuszczalny), innym rozwiązaniem może być dodanie właściwości pomocnika o typie ciągu i dodanie do tej właściwości walidatora daty i powiąż z tą właściwością w interfejsie użytkownika.
A oto weryfikator daty:
źródło