如何使用 .NET Core 2 中的 Razor Pages 更改起始页?

Posted

技术标签:

【中文标题】如何使用 .NET Core 2 中的 Razor Pages 更改起始页?【英文标题】:How to change starting page, using Razor Pages in .NET Core 2? 【发布时间】:2018-02-17 10:52:45 【问题描述】:

我想将我的起始页设置为 /Members/Index。

我在使用MVC的时候,是这样配置的:

app.UseMvc(routes =>
            
                routes.MapRoute(
                    name: "default",
                    template: "controller=Members/action=Index/id?");
            );

但现在我正在尝试新的 Razor Pages 方法,现在 Members 是文件夹,Index 是 Razor Page。 如何将文件夹中的这一页设置为起始页?

我可以在根目录中添加索引页面并在那里进行重定向,但我正在寻找更清洁的东西。

【问题讨论】:

大体思路。 Razor 页面不应影响您的路由。您在加载应用时看到了什么错误/问题? @RossBush 我在子文件夹中构建了所有页面,根目录中没有索引页面。在根文件夹中创建额外的索引页面并重定向到我在子文件夹中的起始页面会起作用,但在客户端和额外的页面上这样做是不必要的重定向。 一个空的 Index.cshtml 和 Members.Index() 中的重定向到操作应该具有相同的效果。如果设置正确,则可能不需要索引页面。 Members 是您所有主页的根文件夹,还是您想首先访问的位置?您的页面在/Pages 下吗? @RossBush 我不认为 RedirectToAction 可用于重定向到 Razor 页面。除非我误解了你的建议。 【参考方案1】:

将以下内容添加到 Startup.cs 中的 ConfigurationServices 函数

 services.AddMvc().AddRazorPagesOptions(options =>
        
            options.Conventions.AddPageRoute("/Members/Index", "");
        );

如果您有另一个索引页面,您可能需要删除或重命名它。

【讨论】:

删除或修改解决问题所需的旧索引页面名称【参考方案2】:

出于测试目的,您可以通过转到 Web 项目的“属性”窗口并选择“调试”选项卡来更改起始页。在“启动浏览器”行中输入起始路径

【讨论】:

【参考方案3】:

我就是这样用的

services.AddMvc()
    .AddRazorPagesOptions(options => 
    
        options.AllowAreas = true;
        options.Conventions.AddAreaPageRoute("Home", "/Index", "");
    );

我的文件夹结构是:

- 区域 |_ 首页 |_ 页 |_ 索引.cshtml |_ //其他区域

【讨论】:

'RazorPagesOptions' does not contain a definition for 'AllowAreas' .NET Core 3.1 中的编译错误【参考方案4】:

AppStart->RouteConfig.cs 尝试以下代码:

 routes.MapRoute(
            name: "Default",
            url: "controller/action",
            defaults: new  controller = "Members", action = "Index"
        );

【讨论】:

以上是关于如何使用 .NET Core 2 中的 Razor Pages 更改起始页?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET Core Razor 页面预选下拉列表中的项目

如何在尝试使用 Razor Pages 删除 ASP.NET Core 中的记录时显示确认消息

如何多次提交表单(asp.net core razor)

如何使用 asp.net core 2.0 Razor 页面执行下载操作

ASP.NET Core 2.2 Razor 页面中的自定义路由

asp.net core中的Razor很慢