Почему я не могу связать даты в строке запроса с параметрами GET?

0

Я использую ASP.NET Core 3.1. Я пытаюсь привязать даты в строке запроса к PageModel с помощью GET. Вот моя строка запроса:

?id=15+startDate=1900-01-01+endDate=1900-01-01

Вот подпись моего OnGet:

public void OnGet(int id, DateTime startDate, DateTime endDate)

Ценности всегда0, 1/1/0001 00:00:00, 1/1/0001 00:00:00 соответственно.

Если я удалю даты и просто передам идентификатор, он будет работать нормально. Почему даты в строке запроса разбивают все, включая идентификатор? Я также попытался изменить типы данных сDateTime кstring и он по-прежнему ломается со строковыми параметрами, всегдаnull .

Теги:
asp.net-core data-binding razor-pages
CodeFix

1 ответ

1
Лучший ответ

Разделитель параметров в строке запроса -& , нет+ как ваш пример. Исправлено:

?id=15&startDate=1900-01-01&endDate=1900-01-01

Возможно, лучший подход к параметрам datetime - принять их как строки, а затем использовать DateTime.TryParse для анализа с контролем над ожидаемым форматом. Таким образом, у вас всегда будет возможность проверить предоставленное строковое значение и решить, хотите ли вы преобразовать его вDateTime , и как.

Поделиться
Источник
  • 0
    Grrrr. Не уверен, о чем я думал, когда ставил плюсы. В последнее время я переключаюсь между очень многими языками. Я должен был это сразу понять. Удивительно, сколько раз смотришь на что-то и не видишь очевидного. Спасибо, что указали на это, теперь я чувствую себя действительно тупой. Кстати, я также рассматривал строковый подход и синтаксический анализ и, вероятно, в конечном итоге включу информацию о часовом поясе или даты ISO, чтобы убедиться, что локальные даты обрабатываются правильно.

Другие вопросы

CodeFix
Цитата дня

"Завидую тестировщикам: все хотят с ними дружить."

Эндрю Таненбаум