Проблема с форматированием текстового поля MVC DateTime
Я хотел бы сделать что-то вроде
model.PickupDate.ToString("d")
Но MVC4 не очень нравится. PickupDate
- это поле DateTime
, и я хотел бы отключить временную часть при отображении в представлении, сохраняя код new { id = "date1" }
, который связывает TextBoxFor
с javaript datepicker. Как я могу показать часть Date только в этом случае?
@Html.TextBoxFor(model => model.PickupDate, new { id = "date1" })
Ответы
Ответ 1
вот как я это сделаю. Надеюсь, что это поможет.
@Html.TextBoxFor(m => m.MyDateTime, new { Value = Model.MyDateTime.ToString("MM-dd-yyyy"), id = "MySuperCoolId"});
или в вашем случае
@Html.TextBoxFor(m => m.PickupDated, new { Value = Model.PickupDate.ToString("d"), id = "date1"});
Ответ 2
Это должно работать:
@Html.TextBoxFor(model => model.SomeDateTime, "{0:MM/dd/yyyy}", new { id = "yourID" })
Ответ 3
Когда вы определяете свою модель, вы можете указать форматирование даты, в этом примере у меня есть DD/MM/YYYY в качестве моего формата, но вы можете делать любой формат, который вам нужен.
Код модели
public class MyModel
{
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime SomeDateTime {get;set;}
}
Затем ваша бритва
@Html.EditorFor(model => model.SomeDateTime, new { id = "date1" })
Ответ 4
На основе fooobar.com/questions/27708/..., протестированного с помощью датпикера JQueryUI.
@Html.TextBoxFor(model => model.PickupDate, "{0:d}", new { id = "date1" })
Ответ 5
Если вы делаете преобразование только в Вид, вы можете записать это, следуя
@Html.TextBoxFor(model => model.SomeDateTime, String.Format("{0:MM/dd/yyyy}"))
Ответ 6
Дисплей будет зависеть от культуры. И хотя в большинстве случаев все остальные ответы верны, это не сработало для меня. Проблема с культурой также вызовет различные проблемы с jQuery datepicker, если они будут включены.
Если вы хотите принудительно форматировать escape /
следующим образом:
@Html.TextBoxFor(model => model.PickupDate, "{0:MM\\/dd\\/yyyy}", new { id = "date1" })
Если мне не удалось убедится, он показывает 08-01-2010
против ожидаемого 08/01/2010
.
Также, если не экранированный jQuery datepicker будет выбирать другой defaultDate, в моем экземпляре это было May 10, 2012
.
Ответ 7
@Html.TextBoxFor(model => model.Date, String.Format("{0:dddd, MMMM d, yyyy}",Model.Date), new { @class = "form-control"})