Первое решение:
с использованием Blazored.Localisation пакет nuget
в консоли диспетчера пакетов
Install-Package Blazored.Localisation
в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddBlazoredLocalisation(); // This adds the IBrowserDateTimeProvider to the DI container
}
и на ваш взгляд
@inject Blazored.Localisation.Services.IBrowserDateTimeProvider browserDateTimeProvider
@page "/"
<p>The current local time is: <strong>@currentLocalTime</strong></p>
@code {
string currentLocalTime = "";
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender) // Remove the firstRender check if you want the current local time displayed to continuously update.
{ // Leave the above firstRender check in place to ensure that the call to StateHasChanged() does not trigger an endless update loop.
var browserDateTime = await browserDateTimeProvider.GetInstance();
currentLocalTime = browserDateTime.Now.ToString();
StateHasChanged();
}
}
}
Второе решение:
как @Ibrahem Uwk сказал, добавить функцию в отдельный JavaScript файл и включить его в _Host.cs html или в любой файл, но не .razor файл
код в JavaScript файл
function getClientDate() {
var d = new Date();
document.getElementById("demo").innerHTML = d;
}
и затем вызовите функцию в вашем представлении
@page "/"
@inject IJSRuntime jsRuntime
...
<p id="demo"></p>
...
@code {
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
// call your JS here
JSRuntime.InvokeVoidAsync("getClientDate");
}
}
}