在ASP.NET MVC中,我们可以将URL映射到控制器,操作和参数 . 例如,以下MapRoute是ASP.NET MVC应用程序中使用的默认值 .

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

这意味着如果我们有url“/ value1 / value2 / value3”,ASP.NET MVC将调用Value1控制器的操作Value2,Value3将用于id变量 . 我想用Razor Pages创建类似的东西 .

我的场景太复杂了,所以我将尝试用一个简单的例子来解释它 . 例如,我将有一个名为“/Pages/Article.cshtml”的页面,页面顶部有以下定义

@page "{articlefriendlyname}"

这意味着我可以使用以下格式调用文章页面

/Articles/do-something-article

在c#代码中,我将使用以下OnGet方法:

public void OnGet(string articlefriendlyname)
{

}

现在,我可以在我的Web应用程序上使用以下URL

/Article/do-something
/Articles/do-something-else

我希望在拥有以下网址时调用这些网址:

/do-something
/do-something-else

这意味着我想定义以下URL映射:

/{articlefriendlyname}      ==>     /Article/{articlefriendlyname}

我可以使用根index.cshtml并定义参数,这样我的URL中就不会有文章单词,但根网页将用于不同的东西,所以我不能用它来显示网站的文章 .

我想我可以使用下面文章中描述的方法,但我没有成功使其工作 .

https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features