带有 php 样式 url 参数的 Blazor ( ?parameter= )

Posted

技术标签:

【中文标题】带有 php 样式 url 参数的 Blazor ( ?parameter= )【英文标题】:Blazor with php style url parameters ( ?parameter= ) 【发布时间】:2022-01-01 15:12:22 【问题描述】:

我正在使用他们的身份验证 API 为 Envato 构建一个 Web 应用程序

基本上当用户使用 Envato 登录时,他们会被 Envato 重定向到

myapplink.com?code=1234-qwerty-login-code

在我的应用程序端,我应该使用此代码参数向 API 发送请求,以获取该用户的访问令牌。

我是 Blazor(服务器)的新手,我知道并且尝试访问 Blazor url 参数的唯一方法是通过 myapplink.com/login/parameter 我尝试使用 php 样式参数(例如 myapplink.com/login/?parameter=value),但它似乎是无法识别。

在我的剃须刀组件中

Authentication.razor

@page "/authentication/code?"

<PageTitle>APP | Authentication</PageTitle>

<div>Some html to render the component</div>

组件基础类似于

Authentication.razor.cs

public partial class Authentication

    [Parameter]
    public string? Code  get; set; 
    
    private async Task Authenticate()
    

    

我可以使用访问参数

myapplink.com/authentication/code-123-qwerty

我的问题:如何使用 PHP 样式的 url 参数访问参数 (myapplink.com/login/?cose=value)

【问题讨论】:

【参考方案1】:

您需要在 Razor 组件中解析查询字符串。路由指令必须是

@page "/authentication"

OnInitialized 方法中,您必须从传递给页面的查询字符串中获取值。

查看https://chrissainty.com/working-with-query-strings-in-blazor/以获取详细信息。

【讨论】:

这正是我想要的,谢谢你的帮助?【参考方案2】:

基于Farzan Hajian的回答,

我能够按照以下步骤解决它:

    使用 nuget 包管理器安装 Microsoft.AspNetCore.WebUtilities@inject NavigationManager NavManager 添加到blazor component
@page "/authentication/code?"
@inject NavigationManager NavManager

<PageTitle>App | Authentication</PageTitle>
    最后得到code参数OnInitialized
    [Parameter]
    public string? Code  get; set; 
    protected override void OnInitialized()
    
        var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
        if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("code", out var _code))
        
            Code = Convert.ToString(_code);
        
    

【讨论】:

以上是关于带有 php 样式 url 参数的 Blazor ( ?parameter= )的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Blazor 中将带有参数的 onclick 添加到按钮?

获取 Blazor 组件中的当前 URL

Blazor University (23)路由 —— 路由参数

如何使用 AWS Elastic Beanstalk 在 URL 中运行带有参数的 PHP 脚本?

有没有办法在 Blazor 中检查 url 是不是有路由约束?

如何从 IIS 重定向带有参数的 URL