Удалить время из ASP MVC @Html.TextBoxFor Control с помощью jQuery datepicker

107
5

Как предотвратить показ времени при использовании jQuery .datepicker()? Ниже приведен раздел модели для двух атрибутов (дата и дата истечения срока действия)


    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
[DisplayName("Expiration Date")]
public string ExpirationDate { get; set; }

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
[DisplayName("Date Taken")]
public string DateTaken { get; set; }


Это отлично работает с помощью элемента управления @Html.EditorFor в представлении, над которым я работаю. Однако, когда я изменяю этот элемент управления из этого:


 @Html.EditorFor(model => model.DateTaken)

:


@Html.TextBoxFor(m => m.DateTaken, new { id = "dtkn" })

чтобы заставить это работать (метка, для которой элемент управления имеет datepicker, примененный к нему):


<script>
$(function () {
$("#dtkn").datepicker('setDate');
$("#exp").datepicker('setDate');
});

$.datepicker.setDefaults({
buttonImageOnly: true,
buttonImage: '<%=Url.Content("~/Content/images/magnify.gif") %>',
defaultDate: -1,
gotoCurrent: true,
prevText: "<< Prev",
nextText: "Next >>"
});
</script>


внезапно время начинает появляться. Какие-либо предложения?


ИЗМЕНИТЬ


Я пробовал следующие форматы, и никто не будет работать:


$("#dtkn").datepicker({ dateFormat: 'dd-mm-yy' }).val();
$("#dtkn").datepicker({ dateFormat: 'yy-mm-dd' });
$("#dtkn").datepicker('getDate').format('yyyyMMdd');

и это:


$("#dtkn").datepicker('getDate').datepicker('dd/mm/yy');
$('#dtkn').datepicker('option', { dateFormat: 'd MM y' });

Вот ошибка, которую я вижу консоль отладки Chrome:


Uncaught TypeError: Cannot call method 'datepicker' of null 

спросил(а) 2013-03-29T20:07:00+04:00 7 лет, 7 месяцев назад
1
Решение
158

Изменить: пользователи MVC4 могут использовать этот


Вы хотите эту перегрузку


@Html.TextBoxFor(m => m.DateTaken, "{0:MM/dd/yyyy}", new { id="dtkn" })

Если вы готовы отказаться от помощника только к нему вручную


<input type="text" value="@Model.DateTaken.ToString("MM/dd/yyyy")" id="dtkn" />

ответил(а) 2013-03-29T22:50:00+04:00 7 лет, 7 месяцев назад
82

Используя @Html.TextBox, а не @Html.TextBoxFor, я смог найти перегрузку, которая работает.

@Html.TextBox("DateTaken", Model.DateTaken.ToString("MM/dd/yyyy"), new { id = "dtkn" })

ответил(а) 2013-03-30T01:36:00+04:00 7 лет, 7 месяцев назад
41

@Html.TextBoxFor(m = > m.DateTaken, "{0: d/M/yyyy}", новый {id = "dtkn" })


[DisplayFormat (ApplyFormatInEditMode = true, DataFormatString = "{0: d/M/yyy}" )]
[DisplayName ( "Дата взята" )]
public string DateTaken {get; задавать; }

ответил(а) 2016-05-17T07:18:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема