C# 为razor页面创建别名

C# 为razor页面创建别名,c#,asp.net-core,asp.net-core-mvc,razor-pages,C#,Asp.net Core,Asp.net Core Mvc,Razor Pages,我正在玩asp.net剃须刀页面 我创建了默认asp.net core 2.1应用程序,然后添加了3个页面: 按页将在路径中可用: Page1 -> http://localhost/Page1 Page2 -> http://localhost/Folder/Page2 Page3 -> http://localhost/Page3 现在我想为第2页添加一个别名,例如: Page1 -> http://localhost/Page1 Page2 -> http

我正在玩asp.net剃须刀页面

我创建了默认asp.net core 2.1应用程序,然后添加了3个页面:

按页将在路径中可用:

Page1 -> http://localhost/Page1
Page2 -> http://localhost/Folder/Page2
Page3 -> http://localhost/Page3
现在我想为第2页添加一个别名,例如:

Page1 -> http://localhost/Page1
Page2 -> http://localhost/Page2
Page2 -> http://localhost/Folder/Page2
Page3 -> http://localhost/Page3
是否可以为该页面创建其他路由/别名而不使用

在@page中指定页面路由

@page "/Page2"
@{
    ViewData["Title"] = "Page2";
}

<h2>Page2</h2>
@page”/Page2
@{
ViewData[“Title”]=“第2页”;
}
第2页
使第2页可用为
http://localhost/Page2
,但不是作为
http://localhost/Folder/Page2
:(

这可能会有所帮助。

T4MVC是ASP.NET MVC应用程序的T4模板,它创建了强类型帮助程序,在许多地方消除了文字字符串的使用

它将为您的视图生成文本路径,然后您可以从同一操作返回不同的视图

if (someCondition){
    return View(this.ViewNames.Page2)
}
else {
    return View(this.ViewNames.Folder_Page2)
}
您可以通过以下方法实现此目的。以下是一个针对您的情况的示例:

services
    .AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AddPageRoute("/Folder/Page2", "/Page2");
    });

不错的方法。我想我可以在我的razor页面(继承PageModel)中添加一个自定义属性(类似于
[AdditionalRoute(“/Page2”)]
)在Stututu.Csw中登记所有这些内容。CSU可以考虑使用自定义约定来帮助它,这取决于您的特定需求。例如,A允许您编写代码来自动为多个页面提供上述解决方案。这有点先进,但值得付出努力。