Ahoj,
v jedné stránce v projektu se mi přestali fungovat tlačítka nedělal jsem v této části žádné změny, ale při jiných úpravách jsem aktualizoval na 4.3.6 a později na 4.3.7
Na jedné konkrétní stránce mi př kliknutí na tlačítko vyskočila chyba:
DotVVM.Framework.Runtime.Commands.InvalidCommandInvocationException Invalid command invocation - The specified command binding was not found. ### Command binding with wrong DataContext path and correct binding id, validation path
Zjistil jsem, že se to chová jak u dot:button tak bp:button a vyskakuje při použití vlastností visible nebo enable. přitom při vykreslování stránky tyto atributy fungují v pořádku a problém je pouze po kliknutí na tlačítko.
Když jsem visible v tlačítku odebral a použil v div elementu chovalo se to správně.
dot:Button má takovou zvláštní fíčuru, že zakazuje zavolání commandu, pokud je na serveru hodnota Visible nebo Enabled false. Tato chyba vypadá jako, že může být způsobená tímto, na serveru máte z nějakého důvodu MoznostPrihlasovani rovno false. Ta chybová hláška je dost zavádějící, to opravíme (díky za nahlášení).
Procházel jsem commity, ale Jak to může souviset s upgradem 4.3.5->4.3.7 mě nenapadá, tato validace je v Buttonu od nepaměti. Pokud zjistíte jakým způsobem se změnila MoznostPrihlasovani na false, tak určitě dejte vědět; bylo by dost špatné, kdyby jsme nějakou opravou změnili jak funguje serializace
Message:“Invalid command invocation - The specified command binding was not found.”
Data:{}
Source:“DotVVM.Framework”
HResult:-2146233088
StackTrace:" at DotVVM.Framework.Runtime.Commands.EventValidator.ValidateCommand(String path, String commandId, DotvvmControl viewRootControl, String validationTargetPath) in //src/Framework/Framework/Runtime/Commands/EventValidator.cs:line 36\r\n at DotVVM.Framework.Runtime.Commands.CommandResolver.GetFunction(DotvvmControl targetControl, DotvvmControl viewRootControl, IDotvvmRequestContext context, String[] path, String commandId, Func2[] args) in /_/src/Framework/Framework/Runtime/Commands/CommandResolver.cs:line 23\r\n at DotVVM.Framework.Runtime.Commands.CommandResolver.GetFunction(DotvvmControl viewRootControl, IDotvvmRequestContext context, String[] path, String command, Func2[] args) in //src/Framework/Framework/Runtime/Commands/CommandResolver.cs:line 56\r\n at DotVVM.Framework.ViewModel.Serialization.DefaultViewModelSerializer.ResolveCommand(IDotvvmRequestContext context, DotvvmView view) in //src/Framework/Framework/ViewModel/Serialization/DefaultViewModelSerializer.cs:line 384\r\n at DotVVM.Framework.Hosting.DotvvmPresenter.ProcessRequestCore(IDotvvmRequestContext context) in //src/Framework/Framework/Hosting/DotvvmPresenter.cs:line 236\r\n at DotVVM.Framework.Hosting.DotvvmPresenter.ProcessRequestCore(IDotvvmRequestContext context) in //src/Framework/Framework/Hosting/DotvvmPresenter.cs:line 330\r\n at DotVVM.Framework.Hosting.DotvvmPresenter.ProcessRequest(IDotvvmRequestContext context) in //src/Framework/Framework/Hosting/DotvvmPresenter.cs:line 84\r\n at DotVVM.Framework.Hosting.Middlewares.DotvvmRoutingMiddleware.Handle(IDotvvmRequestContext context) in //src/Framework/Framework/Hosting/Middlewares/DotvvmRoutingMiddleware.cs:line 133\r\n at DotVVM.Framework.Hosting.Middlewares.DotvvmRoutingMiddleware.Handle(IDotvvmRequestContext context) in //src/Framework/Framework/Hosting/Middlewares/DotvvmRoutingMiddleware.cs:line 146\r\n at DotVVM.Framework.Hosting.DotvvmMiddleware.Invoke(HttpContext context) in /_/src/Framework/Hosting.AspNetCore/Hosting/Middlewares/DotvvmMiddleware.cs:line 68"
}
Osekal jsem projekt na co nejmíň a chyba se neprojevila, tak to moc nechápu.
T.
Pardón, zapomněl jsem na toto odpovědět. Ta druhá chyba už je něco jiného, ale vůbec nechápu kde se bere. Ty IDčka jsou přiřazené při kompilaci stránky, takže jen těžko můžou změnit bez restartu aplikace (i tak by samozřejmě měly být deterministické, ale v tom by mohly být bugy). Máte na stránce jenom jeden command s tím textem “_root.DialogPrihlasit(_this.Id)”, nebo je možné, že to z nějakého důvodu našlo nějaký druhý?