В бритве MVC я помещаю текущую дату в базу данных вот так ...
model.Returndate = DateTime.Now.Date.ToShortDateString();
Так как поле базы данных является типом данных datetime, и я конвертирую текущую дату в строковый формат, это не работает .. как я могу это сделать? Я использую строковый формат, потому что мне нужна дата в формате мм / дд / гггг, а не в формате времени мм / дд / гггг чч: мм: сс ..
РЕДАКТИРОВАТЬ:
В контроллере у меня есть
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
В частичном обзоре у меня есть
@Html.EditorFor(model => model.Returndate)
Здесь дата отображается как дата и время вместе ... Я хочу, чтобы отображалась только дата. Не время. Надеюсь, это правка лучше объясняет.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
источник
источник
ToString("mm/dd/yyyy");
, чтобы видеть именно то, что вы хотите.DateTime
. Вы выполняете форматирование строки на ВЫХОДЕ ... Отформатируйте его только для конечного средства просмотра.Ответы:
Если тип столбца - DateTime в SQL, тогда он будет хранить время, в которое вы его передали или нет.
Лучше было бы правильно сохранить дату:
а затем отформатируйте его, когда вам нужно отобразить его:
Или, если вы используете EditorFor:
или
@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))
Чтобы добавить свойство к вашей модели, добавьте этот код:
public string ReturnDateForDisplay { get { return this.ReturnDate.ToString("d"); } }
Затем в вашем PartialView:
РЕДАКТИРОВАТЬ:
Привет, ребята, просто хочу пояснить для этого ответа, что, если я говорю: «Если вы используете EditorFor», это означает, что вам нужен шаблон EditorFor для типа значения, которое вы пытаетесь представить.
Шаблоны редактора - отличный способ управлять повторяющимися элементами управления в MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Вы можете использовать их для наивных типов, таких как String, как я сделал выше; но они особенно хороши, поскольку позволяют создавать шаблоны набора полей ввода для более сложного типа данных.
источник
Просто пришлось самому разобраться с этим сценарием - нашел действительно простой способ сделать это, просто аннотируйте свое свойство в модели следующим образом:
[DataType(DataType.Date)] public DateTime? SomeDateProperty { get; set; }
Это также скроет кнопку времени из окна выбора даты.
Извините, если этот ответ немного запоздал;)
источник
Это работает, если вы хотите отображать в TextBox:
@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")
источник
Дата / время в базе данных вообще не будет форматированной версией. Это будет просто сама дата / время. Другое дело, как вы отображаете эту дату / время при извлечении значения из базы данных. Я сильно подозреваю, что вы действительно хотите:
или возможно
Да, если посмотреть на базы данных с помощью SQL Server Studio , или любой другой , вы теперь увидите полночь - но это не имеет значения, и когда вы запрашиваете дату из базы данных и отображать его пользователю, то вы можете применить соответствующий формат .
РЕДАКТИРОВАТЬ: Что касается вашего отредактированного вопроса, проблема не в модели, а в том, как вы указываете представление. Вы должны использовать что-то вроде:
@Html.EditorFor(model => model.Returndate.Date.ToString("d"))
где
d
- описатель стандартного формата даты и времени для короткого шаблона даты (что означает, что он будет учитывать текущие культурные параметры).Это то, о чем я неоднократно говорил: когда вы показываете пользователю дату / время , самое время отформатировать его как дату без времени.
РЕДАКТИРОВАТЬ: если это не сработает, должен быть способ украсить модель или представление строкой формата или чем-то в этом роде. Я не совсем человек MVC, но мне кажется, что должен быть хороший способ сделать это декларативно ...
источник
Вы можете изменить свою ViewModel, как показано ниже:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]
источник
Вы можете применить собственный формат даты и времени,
ToString
например:DateTime.Now.Date.ToString("MM/dd/yyyy");
Дополнительную информацию о
DateTime.ToString
шаблонах форматов можно найти здесь и здесь .Изменить: после редактирования вашего вопроса, как и другие предложения, вам следует применить формат даты в вашем представлении:
model.Returndate = DateTime.Now.Date; @Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy"))
источник
model.Returndate.ToString("mm/dd/yyyy")
?Я не уверен в Razor, но в ASPX вы делаете:
<%if (item.Modify_Date != null) {%> <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%> <%} %>
В Razor должно быть что-то подобное. Надеюсь, это кому-то поможет.
источник
Если у вас есть цикл for, как показано ниже.
Измените @ item.StartDate на @ item.StartDate.Value.ToShortDateString ()
Это уберет время на тот случай, если вы не сможете аннотировать свое свойство в модели, как в моем случае.
<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>
источник
Включите аннотации данных, такие как DisplayFormat и ApplyFormatInEditMode, чтобы получить желаемый результат.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Теперь ваша дата выставления счета будет отображаться как.
источник
Вы можете просто преобразовать дату и время. Что-то типа:
@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))
источник
У меня были проблемы с другими решениями на этой странице, поэтому я решил бросить это.
@Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" })
Таким образом, вам нужно только добавить "{0: d}" во второй параметр, и все готово.
источник