diff --git a/src/DotVVM.Framework/Compilation/Javascript/JsFormattingVisitor.cs b/src/DotVVM.Framework/Compilation/Javascript/JsFormattingVisitor.cs index 34adb5ed64..48d2e6bb52 100644 --- a/src/DotVVM.Framework/Compilation/Javascript/JsFormattingVisitor.cs +++ b/src/DotVVM.Framework/Compilation/Javascript/JsFormattingVisitor.cs @@ -106,8 +106,7 @@ public override string ToString() public string GetParameterlessResult() { - if (parameters != null) throw new InvalidOperationException($"The script contains parameters: `{ToString()}`."); - return result.ToString(); + return GetResult(OperatorPrecedence.Max).ToDefaultString(); } public ParametrizedCode GetResult(OperatorPrecedence operatorPrecedence) diff --git a/src/DotVVM.Framework/Controls/KnockoutHelper.cs b/src/DotVVM.Framework/Controls/KnockoutHelper.cs index d60056c77a..53a5618f0f 100644 --- a/src/DotVVM.Framework/Controls/KnockoutHelper.cs +++ b/src/DotVVM.Framework/Controls/KnockoutHelper.cs @@ -267,10 +267,14 @@ private static JsExpression TransformOptionValueToExpression(DotvvmBindableObjec { switch (optionValue) { - case IValueBinding binding: - return new JsIdentifierExpression( - JavascriptTranslator.FormatKnockoutScript(binding.GetParametrizedKnockoutExpression(handler, unwrapped: true), - new ParametrizedCode("c"), new ParametrizedCode("d"))); + case IValueBinding binding: { + var adjustedCode = binding.GetParametrizedKnockoutExpression(handler, unwrapped: true).AssignParameters(o => + o == JavascriptTranslator.KnockoutContextParameter ? new ParametrizedCode("c") : + o == JavascriptTranslator.KnockoutViewModelParameter ? new ParametrizedCode("d") : + default(CodeParameterAssignment) + ); + return new JsSymbolicParameter(new CodeSymbolicParameter("tmp symbol", defaultAssignment: adjustedCode)); + } case IStaticValueBinding staticValueBinding: return new JsLiteral(staticValueBinding.Evaluate(handler)); case JsExpression expression: