4

在 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

当我有以下 URL 时,我希望调用这些 URL:

/do-something
/do-something-else

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

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

我可以使用根 index.cshtml 并定义参数,这样我的 URL 中就不会包含 Articles 词,但根网页将用于不同的内容,因此我不能使用它来显示网站的文章。

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

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

4

0 回答 0