对页面的除了常用的组件参数外,还可以用如下方式:
Index.razor
@page "/"
<PageTitle>@UserName</PageTitle>
<div id="divUserName">
<input type="text" id="txtUserName" value="@UserName"/>
<a href="/counter/@UserId">计数页面</a>
</div>
<button class="btn btn-primary" onclick="InvokeCSharp()">JS调用C#</button>
<button class="btn btn-primary" @onclick="InvokeJS">C#调用JS</button>
Index.razor.cs
using System.Diagnostics;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
namespace MyProject.Pages;
public partial class Index
{
private static Func<string,Task> TestAsync;
private string UserName{set;get;} = "小明";
private string UserId{set;get;} = "2";
[Inject]
private IJSRuntime JS{set;get;}
private async void InvokeJS()
{
await JS.InvokeVoidAsync("showInfo", "小红");
}
protected override void OnInitialized()
{
base.OnInitialized();
TestAsync = LocalTestAsync;
}
[JSInvokable]
public static async Task Test(string value)
{
await TestAsync.Invoke(value);
}
private async Task LocalTestAsync(string value)
{
if (UserName == "小明")
{
UserName = value;
}
else
{
UserName = "小明";
}
Console.WriteLine("UserName=" + UserName);
StateHasChanged();
}
}
结果:
