为了便于说明,我举一个简单的例子如下。
public class ReviewModel : PageModel
{
public void OnGet(int? id)
{
if (id == null)
ViewData["X"] = "null";
else
ViewData["X"] = id;
}
}
@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 Debugger在抛出404页面时找出id
的值,但我无法介入。
当传入请求以404结尾时,如何知道id的值?
答案 0 :(得分:3)
我认为它与路由有关,你应该能够在你的Startup.cs中创建自己的路径:
options.Conventions.AddPageRoute("/Review", "Review/{id?}");
请参阅https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features