diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Pages/Scripts.razor b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Pages/Scripts.razor index 54130124..8f3612ac 100644 --- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Pages/Scripts.razor +++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Components/Pages/Scripts.razor @@ -60,21 +60,42 @@ else } -@if (FindSourceScript() is { } src) +@* The dialog's EXISTENCE is gated on the held id (operator intent); the resolve drives only its + CONTENT. Gating existence on FindSourceScript() would make the modal a function of _rows, and any + render where the row is momentarily unresolvable (a future reload/poll setting _rows null or + replacing the list) would unmount the subtree and dispose the Close handler's binding id — a + click already in flight then throws GetRequiredEventBindingEntry. Latent today (_rows is written + once, in OnInitializedAsync) but the shape bit ScadaBridge live the moment a refresh landed. *@ +@if (_sourceScriptId is not null) { + var src = FindSourceScript();