首页 > 解决方案 > 如何处理 asp.net core razor 页面中的路由?

问题描述

我有两页 Home.cshtml 和 Job.cshtml

在启动文件中我管理这个

services.AddRazorPages().AddRazorPagesOptions(options =>
        {              
            options.Conventions.AddPageRoute("/Home", "/{handler?}");
        });


services.AddRazorPages().AddRazorPagesOptions(options =>
            {
                options.Conventions.AddPageRoute("/Job", "{*url}");
            });

我想为 Home.cshtml 打开这个 url

http://localhost:44004/au/hospital-jobs-in-India

第二个网址是我想在 Job.cshtml 中打开它

http://localhost:44004/best-jobs-in-India/Page-3/NewsData

注意:现在我的问题是,对于两个 url,它都点击了 Job.cshtml,但我想点击单独的页面。

标签: c#asp.netasp.net-mvcasp.net-corerazor-pages

解决方案


您应该了解Razor 页面中的友好路由是什么。作为您当前的路由模板,/au并将/au/映射到Home页面它应用程序捕获任何不映射到物理文件的 URL,/au/hospital-jobs-in-India并将映射到Job页面,因为该路由不匹配第一个友好路由,但它匹配{*url}路由模板。您应该根据您的要求修改路由,例如,更改第一个路由模板/au/{handler?}

另外,您不需要AddRazorPages多次注册,可以直接AddPageRoute在一个里面添加多个AddRazorPagesOptions


推荐阅读