2015-11-07 2 views
2

У меня есть модель:Почему выбирает сборщик данных?

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

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

и вид:

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

, которые по каким-то причинам не установлено значение модели, когда форма нагрузки, интересно почему?
я должен вручную:

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

Но, в форме я вижу (это мой компьютер локали) формат ДД.ММ.ГГГГ, почему?
enter image description here

Если попытка установить MyDateFormat = "дд.мм.гггг", не работает, см ДД.ММ.ГГГГ:
enter image description here

Я понимаю, что гггг-ММ-ДД .net выполнения локальный формат и dd.MM.yyyy - мой локальный формат компьютера.
Как это сделать, чтобы не зависеть от языкового стандарта компьютера и локализации времени выполнения .net?

+0

Какой тип даты вы используете? Пользовательский интерфейс jQuery? – mezmi

+0

Bootstrap datepicker использование – Ildar

+0

Bootstrap не поставляется с датой. – mezmi

ответ

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"}); 
+0

спасибо, с TextBoxFor работает, но стиль текстового поля не применяется, добавлен класс «form-control» - отображается без стиля – Ildar

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; } 
Смежные вопросы