Ejemplo n.º 1
0
        private static string EvalComponentExpression(ExpressionParser parser, TemplateToken token, TemplateParserContext context)
        {
            TemplateToken.ParameterizedExpression pExpr = token.ExtractParameters();

            string componentName = pExpr.MainExpression;

            if (pExpr.MainExpression.StartsWith("(") && pExpr.MainExpression.EndsWith(")"))
            {
                componentName = parser.Evaluate <string>(pExpr.MainExpression, context, token.TokenPosition);
            }

            TemplateParserContext newContext = (TemplateParserContext)context.CreateLocal();

            foreach (string varName in pExpr.Parameters.Keys)
            {
                newContext.SetLocal(varName, parser.Evaluate(pExpr.Parameters[varName], context));
            }

            ControllerAction viewComponent = WebAppHelper.GetViewComponent(componentName);

            if (viewComponent == null)
            {
                throw new TemplateRenderingException("View component " + componentName + " not found", token.TokenPosition);
            }

            try
            {
                return(WebAppHelper.RunViewComponent(viewComponent, newContext));
            }
            catch (Exception e)
            {
                throw new TemplateRenderingException("Error rendering view component " + componentName, e, token.TokenPosition);
            }
        }
Ejemplo n.º 2
0
        private static string EvalTranslationExpression(ExpressionParser parser, TemplateToken token, TemplateParserContext context)
        {
            int parenIdx = token.Text.IndexOf('(');

            string tag        = token.Text;
            string parameters = null;

            if (parenIdx > 0)
            {
                parameters = token.Text.Substring(parenIdx + 1);
                tag        = token.Text.Substring(0, parenIdx).Trim();
            }

            string translation = TranslationHelper.GetTranslation(context.View.ViewName, tag);

            if (translation == null)
            {
                return("{?{" + tag + "}?}");
            }

            if (parameters != null)
            {
                IParserContext localContext = context.CreateLocal();

                localContext.Set("__Translation__", translation);

                translation = parser.Evaluate <string>("string.Format(__Translation__," + parameters, localContext, token.TokenPosition);
            }

            return(translation);
        }