I wanted to set my starting page to /Members/Index.
When I was using MVC, I configured it as following:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Members}/{action=Index}/{id?}");
});
But now I'm trying new Razor Pages approach, and now Members is folder and Index is Razor Page.
How to set this page in folder as starting one?
I can add Index page in root directory and make redirect there, but I was looking for something cleaner.
For testing purposes you can change the start page by going to the Properties window for the web project and select the Debug tab. On the 'Launch browser' line enter the starting path
The simplest way to designate a "starting" page beginning with ASP.NET Core 2.1 is using the @page
directive in the cshtml file. This feature is explained in this blog post and the directive official documentation is this section on Razor Page syntax.
For example, designating the route as "/" causes this page to become the default page:
@page "/"
@model sample.Pages.startModel
@{
ViewData["Title"] = "Start Page";
}
<h2>Start Here!</h2>
...
Add the following to your ConfigurationServices function in Startup.cs
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Members/Index", "");
});
If you have another index page you'll probably need to delete or rename it.
Try following code at AppStart->RouteConfig.cs
:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Members", action = "Index"}
);