Как я могу форсировать маршрут с помощью .html и id? - PullRequest
0 голосов
/ 22 октября 2019

Я хочу форсировать Route с помощью .html и идентификатора длиной 32.

Например, вот URL:

https://localhost:44331/Re/test.html?id=12345678901234567890123456789012

Я хочу, чтобы при отсутствии идентификатораПараметр в URL или длина идентификатора не 32, он возвращает код состояния 404.

Вот контроллер:

namespace V.Controllers
{
    [Route("Re/")]
    public class ReController : Controller
    {
        [Route("test.html{id:length(32)}")]
        public IActionResult test(string id)
        {
            return View();
        }
    }
}

После запуска кода он всегда сообщает о состоянии 404код.

Что не так с моим маршрутом?

1 Ответ

2 голосов
/ 22 октября 2019

Не думаю, что вы можете указать параметры строки запроса в маршруте. Попробуйте проверить id в действии или, если вы можете изменить маршрут, добавьте его в качестве дополнительного сегмента.

    [Route("Re/")]
    public class ReController : Controller
    {
        [Route("test.html")]
        public IActionResult test(string id)
        {
            if (id == null || id.Length != 32)
                return NotFound();

            return Json(new {id= id});
        }

        [Route("test2.html/{id:length(32)}")]
        public IActionResult test2(string id)
        {
            return Json(new {id= id});
        }
    }

См .: Документы Microsoft

...