Имя: Пароль:
1C
 
ASP.Net, MVC - как русифицировать дату?
0 Sabre
 
27.08.21
12:35
У меня такая проблема - представление (страница HTML) проверяет дату в формате ДДММГГГГ, а бэкэнд - в формате ММДДГГГГ. Из за этого получается каламбур: если нужно ввести день месяца больше, чем 12, то в формате 13.01.2000 ругается проверка на странице, а если 01.13.2000 - то уже ругаются темные силы бэкенда (они, кстати, предупреждение на страничку и отправляют).
Часть проблем решил, добавив у свойств классов такое:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy}", ApplyFormatInEditMode = true)]

Однако теперь фронт не принимает входящее значение даты с бэкэнда.
Так можно очень долго возиться, и врядли получится все как надо. Решил спросить тут - уверен, у российских программистов это тривиальная процедура настройки приложения.
1 Sabre
 
27.08.21
12:36
Кстати, вот это вот не работает - {0:yyyy}. Но это уже другая история... Работает так: "{0:dd'/'MM'/'yyyy}"
2 Sabre
 
27.08.21
12:50
В HTML под капотом при открытии вот так: value="27/08/2021" (пользователь же видит пустое представление даты)
После того, как пользователь выберет сам: value="2021-08-27"
3 Sabre
 
27.08.21
12:59
Наковырял вот что:
Если у свойства класса подставить буржуйский формат даты, то в этом формате данные попадают под капот HTML, а пользователь уже видит дату в другом, нормальном, нашем формате. В общем, вот так дата передается на фронт нормально:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Дата постройки здания")]
public DateTime? BuildingConstructionDate { get; set; }

Если найти, где настройка глобализации в приложении и выставить российскую, то все будет хорошо. Вот это в файле gloval.asax не срабатывает:
  <system.web>
    <globalization culture="ru-RU" uiCulture="ru-RU" />
4 Serginio1
 
27.08.21
13:48
Лучше здесь вопросы задавать http://rsdn.org/
5 Serginio1
 
27.08.21
14:12
6 Sabre
 
27.08.21
14:21
(4) (5) На стаке я уже давно с индусами тусуюсь, а вот про rsdn почему то впервые слышу. Из наших все время попадался только cyberforum
7 Serginio1
 
27.08.21
17:03
rsdn старый сайт. Сейчас там поутихло по сравнению с нулевыми, но тусуются грамотные прогеры.
В любом случае лучше задавать вопросы по C# точно не на этом форуме
8 Fram
 
27.08.21
17:30
Работа с датой в вебе это полный пи...! Независимо от языка. Значение в HTML всегда в формате гггг-мм-дд. И вот вокруг этого надо уже плясать и во фронте и в бэке
9 Fram
 
27.08.21
17:38
Либо забить на input type="date" и писать свой input с обработкой ввода каждого символа
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.