#.net #datetime #asp.net-web-api #routes #controller
Вопрос:
Получил объект с именем Item
с DateTime
полем даты, которое настроено с аннотацией данных Column(TypeName="Date")]
(хранит только дату без указания времени в бд).
В моем контроллере у меня есть GET
метод, который должен возвращать список результатов. Метод parameter / url
должен выглядеть как свидание, но, я думаю, это не обязательно должно быть свидание.
Пример: www.localhost:port/16-3-2021
- Использую ли я
DateTime
в качестве параметра илиString
, что проще/лучше? - Если параметр есть
string
, как мне правильно проанализировать его до короткой даты (с форматированием, как указано выше), чтобы я мог сказать:
дБ.Товары.Где(товар => товар.Дата == дата)
- Если параметр —
DateTime
как настроить маршрутизацию в соответствии с заданным форматом (как указано выше)?
Ответ №1:
Во-первых, весь подход кажется мне неправильным, и кажется, что использование Entity Framework решит ваши проблемы с типами. Чтобы ответить на ваши вопросы:
- Вы можете использовать только
string
внутриurl
. - Если я правильно понял, вам нужен только метод, чтобы вывести a
string
из вашегоItem
класса, как показано ниже
public class Item {
Date date { get; set; }
public dateToString()
{
return $"{this.date.Day}-{this.date.Month}-{this.date.Year}";
}
}
- Просто используйте
dateToString
каждый раз, когда вам нужно пройтиdate
как astring
, чтобы не потерять свой формат.
Комментарии:
1. На самом деле я использую EntityFramework. НО поддерживаемый формат
2021-03-16
соответствует xkcd.com/1179 . И то, что мне нужно, находится16-03-2021
в URL-адресе, а затем каким-то образом проанализировать его или что-то еще, что нужно сделать, чтобы я мог фильтровать по своемуDateTime
свойствуItem
класса. Куда-нибудь в репо я должен пойтиdb.Items.Where(item => item.Date == date)
или около того.