如何使用 .html 和 id 强制路由?

How can I force the Route with .html and id?

我想用 .html 和 32 长度的 ID 强制 Route

例如,这里是 URL:

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

我想要URL里面没有id参数或者id的长度不是32,就是returns404状态码。

这是控制器:

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

我运行代码后,总是报404状态码。

我的路线有什么问题?

我认为您不能在路由中指定查询字符串参数。尝试验证操作中的 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 Docs