Внутри моего WebAPI У меня есть метод, который позволяет пользователю зарегистрироваться на мою страницу.WebAPI разрешает только один формат даты
[AllowAnonymous]
[Route("create")]
[HttpPost]
public async Task<IHttpActionResult> CreateAccount(MyModel newAccount)
{
}
В моей модели есть поле DateTime, которое заполняется датой, когда запрос сделан.
Все работает нормально, когда пользователь отправляет, например, 1990-02-07
, но для 07.02.1980
Я получаю неправильное значение внутри моей модели - значения даты до месяца.
Я знаю, что могу создать пользовательский JsonConverter
, как показано here, но могу ли я сделать это по всему миру?
Внутри Startup.cs
у меня есть:
config.MapHttpAttributeRoutes();
config.Formatters.Remove(config.Formatters.XmlFormatter);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
jsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd";
jsonFormatter.SerializerSettings.DateParseHandling = DateParseHandling.DateTime;
, но все же я могу сделать запрос с недопустимым форматом дата.
Я хотел бы глобально разрешить единый формат для даты и времени.
Я хотел бы разрешить yyyy-MM-dd
(1990-02-07) и yyyy-MM-dd hh:mm:ss
(2016-07-28 11:56:00) и вернуть badrequest или неверный запрос, когда задан другой формат без обработки данных.
Благодарим вас за это. Внутри 'ReadFromStreamAsync' я должен прочитать строку и преобразовать ее в DateTime. Я должен бросить исключение, если формат другой, который я ожидаю? В идеале я хотел бы вернуть ошибку 'Invalid format', так же, как возвращает ValidationAttribute. Могу ли я сделать это с помощью пользовательского форматирования? – Misiu
@Misiu Вам необходимо прочитать поток в ReadFromStreamAsync, а затем преобразовать его в формат даты, который вы хотите. Вы можете исключить исключение из этого метода, но я не думаю, что вы можете сделать это так же, как ValidationAttribute – Paresh
. Я попробую это и дам вам знать, работает ли он так, как хотелось бы, чтобы он работал. – Misiu