2016-06-24 3 views
0

У меня есть, казалось бы, простой дисплей даты, который показывает либо «Дата начала» по умолчанию, либо дату результата AJAX, когда переключается другая «Дата продажи» DropDownBoxFor. Формат даты должен быть установлен как короткая дата, но дисплей всегда отображается в формате даты и времени. После переключения поля «Дата продажи» «Дата начала» извлекается для соответствующей «Даты продажи» и отображается как дата RFC1123!Отображение даты ботстрапа всегда в неправильном формате

Модель:

public DateTime StartDate { get; set; } 

Razor:

@Html.TextBoxFor(m => m.StartDate, "{0:d}", new { @readonly = "readonly", @class = "form-control" }) 

AJAX:

success: function (data) { 
    var pattern = /Date\(([^)]+)\)/; 
    var results = pattern.exec(data[0].StartDate); 
    var dt = new Date(parseFloat(results[1])); 
    $("#StartDate").val(dt); 

После изменения TextBoxFor к Displayfor, короткий срок показал, правильно, но не будет обновление после переключения другого поля. Итак, я обернул DisplayFor в промежутке и заменил .val() с помощью .html() в AJAX, но форматы вернулись к неправильной дате и времени по умолчанию и RFC1123 после переключения! Может ли кто-нибудь увидеть, что здесь происходит? Спасибо заранее!

+0

вы попытался удалить атрибут только для чтения? чтобы проверить, может ли это быть причиной вашей проблемы ... – RokumDev

+0

@RokumDev - спасибо за ответ, и да, я удалил только чтение и появились неправильные форматы, только тогда они доступны для редактирования. – jle

ответ

0

Я никогда не узнал, почему это происходит, но мое обходное решение достигает конечной цели: я изменил TextBoxFor на EditorFor, тогда всякий раз, когда использовался переключатель, скрипт меняет текст html на итоговую дату.

Razor:

<div class="startDate"> 
    @Html.EditorFor(m => m.StartDate, "DateTime", "StartDate", new { @class = "form-control" }) 
</div> 

AJAX:

success: function (data) { 
    var pattern = /Date\(([^)]+)\)/; 
    var results = pattern.exec(data[0].StartDate); 
    var dt = new Date(parseFloat(results[1])); 
    $(".startDate").text((dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear()); 
Смежные вопросы