Razor页面路由在MVC应用中不起作用

问题描述

我有一个MVC应用,正在尝试向其中添加一些Razor页面。我已将以下页面添加到项目根目录:

pages/account/index.cshtml

但是,我无法使用这样的标记帮助程序来生成页面的URL:

<a  class="nav-link text-dark"  asp-page="/Account" title="Manage">Hello @User.Identity.Name!</a>

这将导致以下网址: / Asset / List?page =%2FAccount%2FAccount

相对于当前页面的网址。

但是我无法在浏览器中浏览到 / account / index / account ,这表明路由存在问题。

我的MVC控制器路由运行正常,在标识区域的项目模板中创建的认Razor页面也是如此,例如:

identity/pages/account/manage/index

我的configure方法如下:

public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios,see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }

和ConfigureServices:

public void ConfigureServices(IServiceCollection services)
        {
            
            services.AddControllersWithViews().AddRazorRuntimeCompilation();
            services.AddRazorPages();
        }

解决方法

我有一个MVC应用,正在尝试向其中添加一些Razor页面。我有 将以下页面添加到项目根目录:

pages / account / index.cshtml

这将导致生成/account/的路由。传递给asp-page属性的值是相对文件路径(植根于Pages文件夹),不带扩展名:

<a asp-page="/account/index">Account Home </a>

有关此处的Razor页中路由的更多信息:https://www.learnrazorpages.com/razor-pages/routing