在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)
{
}
现在,我可以在我的网络应用程序上使用以下网址
/Article/do-something
/Articles/do-something-else
我希望在拥有以下网址时调用这些网址:
/do-something
/do-something-else
这意味着我想定义以下URL映射:
/{articlefriendlyname} ==> /Article/{articlefriendlyname}
我可以使用root index.cshtml并定义参数,这样我的URL中就不会有Article文字,但是根网页将用于不同的东西,所以我不能用它来显示文章网站。
我想我可以使用下面文章中描述的方法,但我还没有成功地使它工作。
https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features