Проблема пользовательского формата даты в приложении MVC - PullRequest
3 голосов
/ 17 октября 2010

У меня есть следующая модель и вид, и я бы очень хотел принять значения даты в формате «дд / мм / гггг».Однако, несмотря на использование аннотации DisplayFormat, я все равно получаю ошибку проверки, используя выбранный мной формат.

[MetadataType(typeof(MilestoneMetadata))]
public partial class Milestone {    
    public class MilestoneMetadata {
        [Required][DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        public object Date { get; set; }
    }
}

и представление:

<div class="editor-field">
    <%: Html.EditorFor(model => model.Date) %> 
    <%: Html.ValidationMessageFor(model => model.Date) %>
</div>

Пространства имен и т. Д. Являются правильными дляаннотации и основные классы должны находиться в одном пространстве имен.Это не первое знакомство с этой проблемой, но я не вижу результатов от аннотаций, которые должны повлиять на сопоставления между значениями формы и моделью.Шаблон для дат не помогает мне, потому что я не могу найти способ установить, как даты анализируются при публикации создания или обновления.

ПРИМЕЧАНИЕ: Я нехотите использовать другую культуру пользовательского интерфейса для достижения этой цели.

1 Ответ

5 голосов
/ 17 октября 2010

Попробуйте установить uiCulture в web.config (если оставить значение auto, будет использоваться культура браузера клиента):

<globalization uiCulture="en-US" 
               requestEncoding="utf-8" 
               responseEncoding="utf-8" />

Это заставит en-US формат культуры, когда средство связывания модели по умолчанию анализирует значения запроса (при необходимости адаптируется к необходимой культуре).

Также иметь свойство Date с типом System.Object не очень хороший дизайн.

...