C# Blazor 客户端从 url 中读取哈希参数
C# Blazor client-side read hash parameters from url
我在Blazor
有一个项目
而在客户端,我想读取散列参数
我知道如何在 JavaScript 中执行此操作 - 但我的问题是如何在 Blazor 项目的 c# 客户端中执行此操作
比如我有一个URLhttp://localhost:5060/#token=12345678
如何服用token
?
我的代码在index.cshtml
@page "/"
@inject Microsoft.AspNetCore.Blazor.Services.IUriHelper UriHelper
<h1>Hello, world!</h1>
url is @Url
@functions {
protected override void OnInit() {
Url = GetUrl();
}
public string Url { get; set; }
public string GetUrl() {
return ?;
}
}
如果可以在 JavaScript 中完成,则使用 JavaScript Interop:
1.定义一个提取令牌的JavaScript函数。
2.定义一个调用函数
的C#方法
但是最好还是用 Blazor 来做,它本身使用 JavaScript...
你需要的是查看Microsoft.AspNetCore.Blazor.Services.UriHelperBase and/or中定义的方法
Microsoft.AspNetCore.Blazor.Browser.Services.BrowserUriHelper
希望这对您有所帮助...
注意:<base>
元素设置在 Index.Html 文件中
www根文件夹。
"The HTML <base>
element specifies the base URL to use for all
relative URLs contained within a document. There can be only one
element in a document.
The base URL of a document can be queried from a script using
document.baseURI."
试试这个:
var absoluteUrl = UriHelper.GetAbsoluteUri();
var token = absoluteUrl.Substring(absoluteUrl.IndexOf("=") + 1);
为了在没有 JavaScript 或其他客户端解决方案的情况下读取 C# Blazor 中的哈希参数,我需要更改函数,如下面的代码所示:
@functions {
private string url = string.Empty;
protected override void OnInit() {
string url = UriHelper.GetAbsoluteUri();
string[] parameters = url.Replace(UriHelper.GetBaseUri(), "").Replace("#", "").Split('&');
string token = string.Empty;
foreach (string prm in parameters) {
if (prm.IndexOf("token=") >= 0) {
token = prm.Replace("token=", "");
}
}
UriHelper.OnLocationChanged += OnLocationChanged;
}
private void OnLocationChanged(object sender, string newUriAbsolute) {
url = newUriAbsolute;
}
public void Dispose() {
UriHelper.OnLocationChanged -= OnLocationChanged;
}
}
我在Blazor
有一个项目而在客户端,我想读取散列参数
我知道如何在 JavaScript 中执行此操作 - 但我的问题是如何在 Blazor 项目的 c# 客户端中执行此操作
比如我有一个URLhttp://localhost:5060/#token=12345678
如何服用token
?
我的代码在index.cshtml
@page "/"
@inject Microsoft.AspNetCore.Blazor.Services.IUriHelper UriHelper
<h1>Hello, world!</h1>
url is @Url
@functions {
protected override void OnInit() {
Url = GetUrl();
}
public string Url { get; set; }
public string GetUrl() {
return ?;
}
}
如果可以在 JavaScript 中完成,则使用 JavaScript Interop: 1.定义一个提取令牌的JavaScript函数。 2.定义一个调用函数
的C#方法但是最好还是用 Blazor 来做,它本身使用 JavaScript... 你需要的是查看Microsoft.AspNetCore.Blazor.Services.UriHelperBase and/or中定义的方法 Microsoft.AspNetCore.Blazor.Browser.Services.BrowserUriHelper
希望这对您有所帮助...
注意:<base>
元素设置在 Index.Html 文件中
www根文件夹。
"The
HTML <base>
element specifies the base URL to use for all relative URLs contained within a document. There can be only one element in a document.The base URL of a document can be queried from a script using document.baseURI."
试试这个:
var absoluteUrl = UriHelper.GetAbsoluteUri();
var token = absoluteUrl.Substring(absoluteUrl.IndexOf("=") + 1);
为了在没有 JavaScript 或其他客户端解决方案的情况下读取 C# Blazor 中的哈希参数,我需要更改函数,如下面的代码所示:
@functions {
private string url = string.Empty;
protected override void OnInit() {
string url = UriHelper.GetAbsoluteUri();
string[] parameters = url.Replace(UriHelper.GetBaseUri(), "").Replace("#", "").Split('&');
string token = string.Empty;
foreach (string prm in parameters) {
if (prm.IndexOf("token=") >= 0) {
token = prm.Replace("token=", "");
}
}
UriHelper.OnLocationChanged += OnLocationChanged;
}
private void OnLocationChanged(object sender, string newUriAbsolute) {
url = newUriAbsolute;
}
public void Dispose() {
UriHelper.OnLocationChanged -= OnLocationChanged;
}
}