【问题标题】:ASP .NET Core 2.1 Razor Pages anchor tag helper generates empty href for asp-routeASP .NET Core 2.1 Razor Pages 锚标记助手为 asp-route 生成空 href
【发布时间】:2019-01-03 05:52:24
【问题描述】:

我的锚标签助手在使用 asp-route 属性时会生成空的 href。我确定我错过了什么。

启动 -> 配置服务:

services.AddRouting();
services.AddMvc()
            .AddRazorPagesOptions(options =>
            {
                options.Conventions.AddPageRoute("/user/signin", "signin");
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

然后在剃刀视图中:

 <a asp-route="signin">Sign In</a>

哪个生成

<a href="">Sign In</a>

如果我导航到 /signin,它会正确进入 /user/signin 页面

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    asp-route tag-helper 期望提供的值是named route

    asp-route 属性用于创建直接链接到命名路由的 URL。

    如果要链接到 ASP.NET Core Razor 页面,可以使用asp-page

    <a asp-page="/user/signin">Sign In</a>
    

    这将生成如下内容:

    <a href="/signin">Sign In</a>
    

    【讨论】:

    • 那么 asp-route 需要 Route 属性修饰?我现在做了一个测试并将 [Route("/user/signin", Name = "signin")] 添加到 OnGetAsync 然后
    • 我不认为 ASP.NET Core Razor Pages 支持使用 [Route] 或例如[HttpGet]。围绕here 进行了讨论,建议我的理解是正确的。
    • 谢谢,看来 RedirectToRoute 在 Razor 页面中也不起作用,它没有考虑通过 options.Conventions.AddPageRoute 定义的路由
    • 您需要为此使用RedirectToPage,其值类似于我的示例。
    • RedirectToPage 和 asp 页面对我有用。我只是认为 RedirectToRoute 和 asp-route 在使用路由时会是一种更合适的方式,但现在很明显它们只能与 MVC 一起使用,而 Razor Pages 不支持。
    猜你喜欢
    • 2019-11-02
    • 2020-03-23
    • 1970-01-01
    • 2019-04-10
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    相关资源
    最近更新 更多