Example #1
0
        protected void GenerateEventHandlerActionKey(IdentifierName eventName, IReadOnlyList <IFunctionContext> handlerList)
        {
            KEY(GetEventActionKeyName(eventName), LAMBDA(@model
                                                         => DO.RETURN(ASYNC.LAMBDA((@state, @actions) => {
                LOCAL("newModel", out var @newModel, USE("Object").DOT("assign").INVOKE(INITOBJECT(), @model));

                var modelMemberAccessRewriter = new ModelMemberAccessRewriter(Metadata.Page, @newModel);
                var apiMemberAccessRewriter   = new BackendApiProxyAccessRewriter(Metadata.Page);

                var actionBlock = CodeGeneratorContext.GetContextOrThrow().GetCurrentBlock();

                foreach (var handler in handlerList)
                {
                    var rewrittenHandlerBody =
                        apiMemberAccessRewriter.RewriteBlockStatement(
                            modelMemberAccessRewriter.RewriteBlockStatement(handler.Body));

                    foreach (var statement in rewrittenHandlerBody.Statements)
                    {
                        actionBlock.AppendStatement(statement);
                    }
                }

                actions.DOT("replaceModel").INVOKE(@newModel);
            }))
                                                         ));
        }
Example #2
0
        protected AbstractExpression GetBoundModelExpression(AbstractExpression rootModel)
        {
            if (ModelBinding != null)
            {
                var modelMemberAccessRewriter = new ModelMemberAccessRewriter(Metadata.Page, rootModel);
                return(modelMemberAccessRewriter.RewriteExpression(ModelBinding));
            }

            return(rootModel);
        }