2015-01-19 2 views
0

Недавно я обновил приложение MVC 3 до MVC 5. Я создал новый проект MVC 5 и привез свои файлы внутри. Кажется, что даты обрабатываются иначе, чем раньше. Существует сообщение об ошибке, которое отображается в представлении с помощью @Html.ValidationMessageFor(x=>x.mydate), которое я не могу переопределить методами DataAnnotation или даже использовать мое предыдущее связующее устройство, которое использует другую культуру для формата «dd/MM/yyyy». Может ли кто-нибудь помочь мне раскрыть изменения для проверки даты в MVC 5?MVC 5 привязка даты даты

Мой класс аннотаций

public class passport 
{ 

    [Display(Name = "Fecha de Solicitud")] 
    //[DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime? spanishfechaSolicitud { get; set; } 
} 

и вид. перед тем

@Html.TextBoxFor(x => x.passaporte.spanishfechaSolicitud, new { @Value = String.Format("{0:dd/MM/yyyy}", Model.passaporte.spanishfechaSolicitud) }) 

после

@Html.EditorFor(x => x.passaporte.spanishfechaSolicitud) 

Я обновил свой код в соответствии с тем, что я был проинформирован. Удалите атрибут DataType и атрибут value html. Я также использовал EditorFor(). Теперь дата отображается на странице; однако, валидация javascript говорит: «Поле Fecha de Solicitud должно быть датой». Если я наберу его как MM/dd/yyyy, ему это нравится. Как я могу проверить это форматирование? дд/ММ/YYYY. Заранее спасибо

+0

Можете ли вы разместить свои данныеАннотации и соответствующий HTML-код на вашем представлении? – alex

+0

Чтобы сгенерировать текстовое поле, используйте [TextBoxFor() overload] (http://msdn.microsoft.com/en-us/library/hh833694 (v = vs.118) .aspx), который принимает строку формата '@Html .TextBoxFor (x => x.passaporte.spanishfechaSolicitud, "{0: dd/MM/yyyy}") '(не пытайтесь переопределить атрибут' value'). Включили ли вы jquery 'globalize.js'? –

ответ

0

MVC только форматирует даты с использованием DisplayFormat при использовании Html.EditorFor() или Html.DisplayFor(). TextBoxFor() не будет использовать атрибуты.

Кроме того, неверно использовать символ @ в ваших атрибутах, если атрибут не является зарезервированным словом C# (например, @class). Значение не является зарезервированным словом, поэтому нет @.

Вы также не должны переопределять такое значение, вы в основном делаете привязку всей модели бессмысленной.

+0

Я использовал 'Html.EditorFor()', но я получил тот же результат; формат «dd/MM/yyyy» не будет отображаться на дисплее. –

+0

@ManuelValle - если вы удалите атрибут DataType, это будет противоречить вашему DisplayFormat –

0

Осмотрев решение проблемы с ошибкой проверки jquery. Я нашел этот код, который решил мою проблему на клиенте. У меня уже была проверка на сервере, и это работает. Я делюсь своим нахождением здесь.

$.validator.addMethod('date', 
function (value, element) { 
    if (this.optional(element)) { 
     return true; 
    } 
    var ok = true; 
    try { 
     $.datepicker.parseDate('dd/mm/yy', value); 
    } 
    catch (err) { 
     ok = false; 
    } 
    return ok; 
}); 
Смежные вопросы