Negli ultimi script abbiamo proposto un paio di esempi (https://www.aspitalia.com/script/1338/Impostare-Focus-Controllo-Blazor-Tramite-JavaScript.aspx e https://www.aspitalia.com/script/1339/Invocare-Funzioni-JavaScript-Maniera-Fortemente-Tipizzata-Blazor.aspx) su come interagire con il mondo JavaScript dai nostri componenti Blazor.
Proseguendo sul medesimo caso d'uso di impostare il focus su un particolare elemento della pagina, possiamo apportare ancora una miglioria alla nostra invocazione. L'obiettivo, questa volta, è eliminare anche la stringa con cui indichiamo l'id dell'elemento su cui porre il focus. Andiamo quindi a correggere il Razor Component in questo modo.
@page "/" @inject IJSRuntime jsRuntime <input type="search" @ref="searchBox" placeholder="Cerca..." /> @code { ElementReference searchBox; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await jsRuntime.FocusElement(searchBox); } } }
In questo caso abbiamo posto l'attributo @ref sulla casella di testo, che ci permette di ottenere il riferimento a quell'elemento HTML e di conservarlo in un campo privato di tipo ElementReference. Tale riferimento viene quindi fornito come argomento all'extension method, che aggiorniamo come segue.
namespace BlazorDemo.Extensions { public static class IJSRuntimeExtensions { public static async Task FocusElement(this IJSRuntime jsRuntime, ElementReference element) { await jsRuntime.InvokeVoidAsync("focusElement", element); } } }
E, per finire, dobbiamo anche aggiornare la funzione JavaScript focusElement, che ora riceverà il riferimento all'elemento stesso, anziché il suo id.
function focusElement(element) { element.focus(); }
In questo modo, con pochi e semplici passi, siamo riusciti a rendere fortemente tipizzate anche le invocazioni a funzioni JavaScript.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
.NET Aspire per applicazioni distribuite
Configurare lo startup di applicazioni server e client con .NET Aspire
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Loggare le query più lente con Entity Framework
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Creare agenti facilmente con Azure AI Agent Service
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
I più letti di oggi
- Beta 1 di VS 2005 Enterprise Architect
- Point-in-time restore con gli Azure Storage Blob
- Focus dei tag input con HTML5
- Il nuovo tag nav in HTML5
- Evitare la modalità di risparmio energetico in una Windows Store app
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- AI&ML Conference 2019 - Milano
- Mono 0.12: verso una nuova implementazione di ASP.NET