Разрешить пустой параметр в маршруте MVC - PullRequest
2 голосов
/ 15 декабря 2010

У меня есть маршрут, который должен вызываться только автоматическим процессом:

routes.MapRoute(
  "Automated file processing",
  "Process/{change}/{file}/{type}",
  new { controller = "C", action = "Process" }
);

Где file и type являются необязательными параметрами.В идеале я хотел бы иметь возможность вызвать

/Process/Created/Filename/Text    (with file and type)
/Process/DirectoryListing//Text   (with type only)
/Process/Created/Filename/        (with file only)

Как бы вы получили этот необязательный параметр в середине?На примере маршрута, который я показал, даже если я добавлю file = "", type = "" к маршруту, я получу:

HTTP Ошибка 400 - Неверный запрос.

Ответы [ 3 ]

3 голосов
/ 15 декабря 2010

Вы не можете иметь дополнительные параметры в середине маршрута.По понятным причинам только последний параметр может быть необязательным, или механизм маршрутизации не может устранить неоднозначность между различными возможными случаями.

1 голос
/ 13 мая 2011

Ваш ответ лежит здесь: http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

В нем обсуждается проблема, а также предоставляется обходной путь, надеюсь, это поможет!

0 голосов
/ 15 декабря 2010

Я считаю, что вам нужно добавить file = UrlParameter.Optional, type = UrlParameter.Optional

Для необязательного среднего параметра я бы определил другой маршрут до этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...