Di pisau cukur MVC, saya memasukkan tanggal saat ini di database seperti ini ..
model.Returndate = DateTime.Now.Date.ToShortDateString();
Karena bidang database adalah tipe data waktu dan saya mengubah tanggal saat ini ke format string, ini tidak berfungsi .. bagaimana saya bisa melakukan ini? Saya melakukan format string karena saya ingin tanggal dalam format hh / bb / tttt dan bukan dalam format hh / bb / tttt jj: mm: dd format waktu ..
EDIT:
Di pengontrol yang saya miliki
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
Dalam pandangan parsial, saya punya
@Html.EditorFor(model => model.Returndate)
Di sinilah yang menampilkan tanggal sebagai Tanggal dan Waktu bersama-sama ... Saya hanya ingin tanggal yang ditampilkan. Bukan waktunya. Saya harap hasil edit ini menjelaskan lebih baik.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
sumber
sumber
ToString("mm/dd/yyyy");
agar dapat melihat dengan tepat apa yang Anda inginkan.DateTime
. Anda melakukan pemformatan string pada OUTPUT ... Hanya memformatnya ke penampil akhir.Jawaban:
Jika tipe kolom adalah DateTime dalam SQL maka itu akan menyimpan waktu di mana Anda melewatkan satu atau tidak.
Akan lebih baik untuk menyimpan tanggal dengan benar:
lalu format saat Anda perlu menampilkannya:
Atau jika Anda menggunakan EditorFor:
atau
@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))
Untuk menambahkan properti ke model Anda, tambahkan kode ini:
public string ReturnDateForDisplay { get { return this.ReturnDate.ToString("d"); } }
Kemudian di PartialView Anda:
EDIT:
Hai teman-teman, hanya ingin menjelaskan jawaban ini bahwa dengan mengatakan 'Jika Anda menggunakan EditorFor', itu berarti Anda harus memiliki template EditorFor untuk jenis nilai yang Anda coba wakili.
Template editor adalah cara keren untuk mengelola kontrol berulang di MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Anda dapat menggunakannya untuk tipe naif seperti String seperti yang telah saya lakukan di atas; tapi mereka sangat bagus untuk memungkinkan Anda membuat template sekumpulan bidang input untuk tipe data yang lebih rumit.
sumber
Hanya harus menangani sendiri skenario ini - temukan cara yang sangat mudah untuk melakukannya, cukup beri anotasi pada properti Anda dalam model seperti ini:
[DataType(DataType.Date)] public DateTime? SomeDateProperty { get; set; }
Ini akan menyembunyikan tombol waktu dari pemilih tanggal juga.
Maaf jika jawaban ini agak terlambat;)
sumber
Ini berfungsi jika Anda ingin menampilkan dalam TextBox:
@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")
sumber
Tanggal / waktu dalam basis data tidak akan menjadi versi yang diformat sama sekali. Itu hanya akan menjadi tanggal / waktu itu sendiri. Bagaimana Anda menampilkan tanggal / waktu ketika Anda mengekstrak nilai dari database adalah masalah yang berbeda. Saya sangat curiga Anda benar-benar hanya ingin:
atau mungkin
Ya, jika Anda melihat database menggunakan SQL Server Studio atau apa pun, Anda akan sekarang melihat tengah malam - tapi itu tidak relevan, dan ketika Anda mengambil tanggal dari database dan menampilkannya kepada pengguna, maka Anda dapat menerapkan format yang relevan .
EDIT: Sehubungan dengan pertanyaan yang Anda edit, masalahnya bukan pada modelnya - melainkan bagaimana Anda menentukan tampilan. Anda harus menggunakan sesuatu seperti:
@Html.EditorFor(model => model.Returndate.Date.ToString("d"))
di mana
d
adalah tanggal dan waktu format standar specifier untuk pola tanggal pendek (yang berarti akan mengambil setting budaya saat ini ke account).Itulah sedikit yang telah saya katakan berulang kali - bahwa ketika Anda menampilkan tanggal / waktu kepada pengguna , itulah waktu untuk memformatnya sebagai tanggal tanpa waktu.
EDIT: Jika ini tidak berhasil, harus ada cara mendekorasi model atau tampilan dengan string format - atau sesuatu seperti itu. Saya sebenarnya bukan orang MVC, tapi rasanya harus ada cara yang baik untuk melakukan ini secara deklaratif ...
sumber
Anda dapat memodifikasi ViewModel Anda seperti di bawah ini:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]
sumber
Anda dapat menerapkan format waktu tanggal khusus menggunakan
ToString
seperti:DateTime.Now.Date.ToString("MM/dd/yyyy");
Bacaan lebih lanjut tentang
DateTime.ToString
pola format dapat ditemukan di sini dan di sini .Edit: Setelah pertanyaan Anda diedit, Seperti yang disarankan orang lain, Anda harus menerapkan format tanggal pada tampilan Anda:
model.Returndate = DateTime.Now.Date; @Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy"))
sumber
model.Returndate.ToString("mm/dd/yyyy")
?Saya tidak yakin di Razor tetapi di ASPX Anda melakukan:
<%if (item.Modify_Date != null) {%> <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%> <%} %>
Pasti ada yang mirip di Razor. Semoga ini bisa membantu seseorang.
sumber
Jika Anda memiliki loop for seperti di bawah ini.
Ubah @ item.StartDate menjadi @ item.StartDate.Value.ToShortDateString ()
Ini akan menghapus waktu kalau-kalau Anda tidak dapat membuat anotasi properti Anda dalam model seperti dalam kasus saya.
<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>
sumber
Sertakan Anotasi Data seperti DisplayFormat dan ApplyFormatInEditMode untuk mendapatkan keluaran yang diinginkan.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Sekarang tanggal Bill Anda akan menunjukkan seperti.
sumber
Anda cukup mengonversi datetime. Sesuatu seperti:
@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))
sumber
Saya memiliki beberapa masalah dengan solusi lain di halaman ini, jadi saya pikir saya akan menghentikannya.
@Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" })
Jadi, Anda hanya perlu menambahkan "{0: d}" di parameter kedua dan Anda sudah siap.
sumber