Я немного запутался в том, каким способом добиться чего-то. Мой веб-сайт может отображать поток историй для пользователя, а фид может быть одной из нескольких категорий. (например, вы можете посмотреть фид «Все истории» или фид «Мои подчинения»).ASP.NET MVC Routing vs Конкретные действия
С точки зрения обработки маршрутизации, он делает больше смысла:
1) есть действие (Home/индекс) обрабатывать различные "storyCategory" параметры с маршрутизацией, как это:
[Route("~/"), Route("")] //Index will be default route for both SiteRoot and SiteRoot/Home
[Route("{storyCategory?}/{page?}")]
[Route("{storyCategory?}/Page/{page?}")]
public ActionResult Index(Story.Category storyCategory = Story.Category.None, int page = 1)
ИЛИ
2) имеют определенное действие для каждого storyCategory вместо передачи перечисления в качестве параметра:
[Route("~/"), Route("")] //Index will be default route for both SiteRoot and SiteRoot/Home
public ActionResult Index(int page = 1)
public ActionResult ReadLater(int page = 1)
public ActionResult PlanToUse(int page = 1)
Почему вы говорите, что перечисления будут плохими? Строки должны быть проанализированы – Michael
@Michael, перечисления необходимы только целыми числами, поэтому, если вы используете их непосредственно в URI, вы получите URI, полный бессмысленных чисел, и это не хорошо. Вы можете сделать 'ToString()' на перечислениях, чтобы получить свою идентификационную строку, но люди говорят, что это вредит производительности. – VSG24
У меня он настроен для перечислений. Хотя вы правы, они просто целые числа. Если строковое значение вводится в URL-адрес, оно работает. Таким образом, кажется, что есть возможность либо использовать ints, либо имя перечисления. Однако он представляет проблему, когда пользователь потенциально вводит целое число, которое не сопоставляется с допустимым значением перечисления. По-прежнему использование строки, означало бы разбор строк, что, похоже, эквивалентно компромиссу для получения строкового значения перечисления – Michael