W maszynce do golenia MVC umieszczam aktualną datę w bazie danych w ten sposób ..
model.Returndate = DateTime.Now.Date.ToShortDateString();
Ponieważ pole bazy danych ma typ danych typu datetime i konwertuję bieżącą datę na format ciągu, to nie działa. Jak mogę to zrobić? Robię format ciągu, ponieważ chcę, aby data była w formacie mm / dd / rrrr, a nie w formacie mm / dd / rrrr hh: mm: ss.
EDYTOWAĆ:
W kontrolerze mam
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
W częściowym spojrzeniu mam
@Html.EditorFor(model => model.Returndate)
W tym miejscu wyświetla razem datę i godzinę ... Chcę, aby była wyświetlana tylko data. Nie czas. Mam nadzieję, że ta zmiana wyjaśnia lepiej.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
źródło
źródło
ToString("mm/dd/yyyy");
aby zobaczyć dokładnie to, czego chcesz.DateTime
. Wykonujesz formatowanie ciągu na OUTPUT ... Formatuj go tylko do końcowej przeglądarki.Odpowiedzi:
Jeśli typ kolumny to DateTime w SQL, będzie przechowywać czas, w którym go przekażesz lub nie.
Lepiej byłoby odpowiednio zapisać datę:
a następnie sformatuj go, gdy chcesz go wyświetlić:
Lub jeśli używasz EditorFor:
lub
@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))
Aby dodać właściwość do swojego modelu, dodaj ten kod:
public string ReturnDateForDisplay { get { return this.ReturnDate.ToString("d"); } }
Następnie w swoim PartialView:
EDYTOWAĆ:
Cześć, chcę tylko wyjaśnić tę odpowiedź, że mówiąc „Jeśli używasz EditorFor”, oznacza to, że musisz mieć szablon EditorFor dla typu wartości, który próbujesz reprezentować.
Szablony edytorów to fajny sposób zarządzania powtarzalnymi kontrolkami w MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Możesz ich używać do naiwnych typów, takich jak String, jak zrobiłem powyżej; ale są one szczególnie świetne do tworzenia szablonów zestawu pól wejściowych dla bardziej skomplikowanego typu danych.
źródło
Po prostu musiałem sobie poradzić z tym scenariuszem - znalazłem naprawdę łatwy sposób, aby to zrobić, po prostu dodaj adnotacje do swojej nieruchomości w modelu w następujący sposób:
[DataType(DataType.Date)] public DateTime? SomeDateProperty { get; set; }
Spowoduje to również ukrycie przycisku czasu w selektorze dat.
Przepraszam, jeśli ta odpowiedź jest trochę spóźniona;)
źródło
Działa to, jeśli chcesz wyświetlić w TextBox:
@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")
źródło
Data / godzina w bazie danych w ogóle nie będzie wersją sformatowaną . Będzie to po prostu sama data / godzina. Sposób wyświetlania tej daty / godziny podczas wyodrębniania wartości z bazy danych to inna sprawa. Podejrzewam, że naprawdę chcesz tylko:
lub ewentualnie
Tak, jeśli spojrzysz na bazę danych za pomocą SQL Server Studio lub cokolwiek innego, zobaczysz północ - ale to nie ma znaczenia, a kiedy pobierzesz datę z bazy danych i wyświetlisz ją użytkownikowi, wtedy można stosować odpowiednie formatu .
EDYCJA: Jeśli chodzi o edytowane pytanie, problem nie dotyczy modelu - to sposób określania widoku. Powinieneś użyć czegoś takiego:
@Html.EditorFor(model => model.Returndate.Date.ToString("d"))
gdzie
d
jest standardowym specyfikatorem formatu daty i godziny dla wzorca daty krótkiej (co oznacza, że uwzględni bieżące ustawienia kulturowe).To jest ten kawałek, o którym mówiłem wielokrotnie - kiedy wyświetlasz użytkownikowi datę / czas , jest to czas na sformatowanie go jako daty bez godziny.
EDYCJA: Jeśli to nie zadziała, powinien istnieć sposób na udekorowanie modelu lub widoku ciągiem formatu - lub czymś w tym rodzaju. Nie jestem osobą z MVC, ale wydaje mi się, że powinien być dobry sposób na zrobienie tego deklaratywnie ...
źródło
Możesz zmodyfikować swój ViewModel jak poniżej:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]
źródło
Możesz zastosować niestandardowy format daty i godziny, używając na
ToString
przykład:DateTime.Now.Date.ToString("MM/dd/yyyy");
Więcej informacji na temat
DateTime.ToString
wzorców formatów można znaleźć tutaj i tutaj .Edycja: po edycji pytania, podobnie jak w przypadku innych sugestii, należy zastosować format daty w widoku:
model.Returndate = DateTime.Now.Date; @Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy"))
źródło
model.Returndate.ToString("mm/dd/yyyy")
?Nie jestem pewien w Razor, ale w ASPX robisz:
<%if (item.Modify_Date != null) {%> <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%> <%} %>
W Razor musi być coś podobnego. Mam nadzieję, że to komuś pomoże.
źródło
Jeśli masz pętlę for, taką jak ta poniżej.
Zmień @ item.StartDate na @ item.StartDate.Value.ToShortDateString ()
Spowoduje to usunięcie czasu na wypadek, gdybyś nie mógł dodać adnotacji do swojej nieruchomości w modelu, jak w moim przypadku.
<table> <tr> <th>Type</th> <th>Start Date</th> </tr> @foreach (var item in Model.TestList) { <tr> <td>@item.TypeName</td> <td>@item.StartDate.Value.ToShortDateString()</td> </tr> } </table>
źródło
Dołącz adnotacje danych, takie jak DisplayFormat i ApplyFormatInEditMode, aby uzyskać żądane dane wyjściowe.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Teraz data Twojego rachunku będzie wyglądać jak.
źródło
Możesz po prostu przekonwertować datę i godzinę. Coś jak:
@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))
źródło
Miałem problemy z innymi rozwiązaniami na tej stronie, więc pomyślałem, że wrzucę to.
@Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" })
Wystarczy więc dodać „{0: d}” do drugiego parametru i wszystko powinno być gotowe.
źródło