Why datetime picker behaves?

Refresh

December 2018

Views

69 time

2

I have model:

const string MyDateFormat = "yyyy-MM-dd";

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = MyDateFormat, ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }

and view:

@Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control datepicker" } })

who for some reason don't set model value when the form load, I wonder why?
I have to manually:

<script type="text/javascript">
    $(document).ready(function () {
        var elem = $("#Date").val('@Model.Date.ToString(MyDateFormat)');
    });
</script>

But, in the form i see dd.MM.yyyy (it's my computer locale) format, why?
enter image description here

If trying set MyDateFormat = "dd.MM.yyyy", not work, see dd.MM.yyyy:
enter image description here

I understand, that yyyy-MM-dd is .net runtime local format, and dd.MM.yyyy is my computer local format.
How to do so as not to depend of the locale of the computer and .net runtime locale?

2 answers

1

Вопрос , который вы укажете DataFormatStringнеправильно, потому что вместо того , "yyyy-MM-dd"вы должны использовать "{0:yyyy-MM-dd}". Пожалуйста , попробуйте следующий код, он должен работать:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? Date{ get; set; }
2

Я считаю, что ваш отсутствующий фигурные скобки вокруг выражения.

Попробуйте обертывание выражения yyyy-MM-ddв фигурных скобках , как это{0:yyyy-MM-dd}

const string MyDateFormat = "{0:yyyy-MM-dd}";

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = MyDateFormat, ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }

Кроме того, можно использовать следующее на ваш взгляд, вместо того , чтобы украсить вашу модель собственности с DisplayFormatатрибутом.

@Html.TextBoxFor(model => model.Date, "{0:yyyy-MM-dd}", new { @class="datePicker"});