当传入的请求以 404 结尾时,如何知道 id 的值?
How to know the value of id when the incoming request ends with 404?
为了便于说明,我举个简单的例子如下。
Review.cshtml.cs:
public class ReviewModel : PageModel
{
public void OnGet(int? id)
{
if (id == null)
ViewData["X"] = "null";
else
ViewData["X"] = id;
}
}
Review.cshtml:
@page
@model ReviewModel
<!DOCTYPE html>
<html>
<body>
X = @ViewData["X"]
</body>
</html>
当我导航到
localhost/Review/1
-------------- 404.
localhost/Review/xyz
-------------- 404.
localhost/Review/
-------------- X=null
.
localhost/Review?id=1
-------------- X=1
.
localhost/Review?id=
-------------- X=null
。
localhost/Review?id=xyz
-------------- X=null
.
我尝试使用 Visual Studio 调试器来计算抛出 404 页但我无法进入的 id
的值。
当传入请求以404结尾时,如何知道id的值?
我认为这与路由有关,您应该可以在 Startup.cs:
中使用类似这样的内容来创建自己的路由
options.Conventions.AddPageRoute("/Review", "Review/{id?}");
见https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features
为了便于说明,我举个简单的例子如下。
Review.cshtml.cs:
public class ReviewModel : PageModel
{
public void OnGet(int? id)
{
if (id == null)
ViewData["X"] = "null";
else
ViewData["X"] = id;
}
}
Review.cshtml:
@page
@model ReviewModel
<!DOCTYPE html>
<html>
<body>
X = @ViewData["X"]
</body>
</html>
当我导航到
localhost/Review/1
-------------- 404.localhost/Review/xyz
-------------- 404.localhost/Review/
--------------X=null
.localhost/Review?id=1
--------------X=1
.localhost/Review?id=
--------------X=null
。localhost/Review?id=xyz
--------------X=null
.
我尝试使用 Visual Studio 调试器来计算抛出 404 页但我无法进入的 id
的值。
当传入请求以404结尾时,如何知道id的值?
我认为这与路由有关,您应该可以在 Startup.cs:
中使用类似这样的内容来创建自己的路由options.Conventions.AddPageRoute("/Review", "Review/{id?}");
见https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features