【发布时间】:2017-09-25 23:47:15
【问题描述】:
这些年来我做了很多 ASP.NET API 编程,但对 .NET Core 和 RazorPages 还是很陌生。我似乎无法让路由正常工作。
例如,我有一个索引页面。 OnGet 工作正常,正如预期的那样,它返回 Razor 定义的页面。现在我添加另一个方法,我们称它为 Test to the Index page codebehind,如下所示:
[Route("Test")]
public void Test()
{
Console.WriteLine("Test");
}
现在对于我的生活,我无法通过 localhost/Index/Test 或 localhost/Test 或任何其他我能想到的复杂路线访问这条路线。这是设计使然吗? localhost 和 localhost/index 都返回默认的 get 方法。
这给我带来了很多麻烦,我试图在漂亮的 URL 中使用所有者和产品 ID 显示产品的详细信息,如下所示:
products/{ownerid}/{productid}
如上所述,我无法映射到这个自定义的漂亮 URL。如果我理解正确,映射到 {ownerid}/{productid} 路由的函数应该在索引页代码隐藏中才能被发现,还是我弄错了?
感谢您的帮助。
【问题讨论】:
-
那是因为您使用的是 Razor 页面,这是重新制作网络表单的失败尝试。使用完整的 MVC 套件,你会做得更好(Razor 页面仅支持单个 Get 和单个 Post 方法)
-
另请注意,在 Razor Pages 中,Controller 单词是未知的。 “控制器”是视图本身,所以如果你使用
IndexController你做错了什么 -
仅供参考,单个页面上支持多个获取和发布codingblast.com/asp-net-core-razor-pages-handlers
-
Razor 页面支持路由:mikesdotnetting.com/article/310/routing-in-razor-pages。而且它们并不是重新制作 Web 表单的失败尝试。该评论不准确且无益。现在推荐使用 Razor 页面而不是 MVC,这就是为什么它是 VS 2017 中默认的 ASP.NET Core 项目类型。
-
如果 Razor 页面是对任何东西的翻版,它就是旧的 .ashx 处理程序页面——具有许多新功能。 WebForms 很糟糕,但 MVVM 是一种合法的架构,Razor Pages 做得很好。
标签: c# asp.net-core-mvc asp.net-core-2.0 razor-pages