Esempio n. 1
0
        /// <summary>
        /// Resolves the value for the given expression.
        /// </summary>
        /// <param name="context">The render context.</param>
        /// <param name="templateData">The template data.</param>
        /// <param name="expression">The expression.</param>
        /// <param name="isVariableLookup">True if this is a variable lookup, otherwise false.</param>
        /// <returns>The resolved value.</returns>
        public object ResolveValue(RenderContext context, TemplateData templateData, string expression, bool isVariableLookup)
        {
            if (isVariableLookup && !string.IsNullOrEmpty(expression) && !expression.StartsWith("root."))
            {
                return(context.GetVariable(expression));
            }

            if (isVariableLookup && !string.IsNullOrEmpty(expression) && expression.StartsWith("root."))
            {
                context      = context.RootRenderContext ?? context;
                templateData = context.TemplateData;
                expression   = expression.Substring(5);
            }

            var modelMetadata = ExpressionMetadataProvider.FromStringExpression(expression, templateData, context.ModelMetadataProvider);

            if (modelMetadata == null || !modelMetadata.Valid)
            {
                if (context.UnknownValueResolver != null)
                {
                    return(context.UnknownValueResolver(expression));
                }
                return(null);
            }
            return(modelMetadata.Model);
        }
Esempio n. 2
0
		/// <summary>
		/// Resolves the value for the given expression.
		/// </summary>
		/// <param name="context">The render context.</param>
		/// <param name="templateData">The template data.</param>
		/// <param name="expression">The expression.</param>
		/// <param name="isVariableLookup">True if this is a variable lookup, otherwise false.</param>
		/// <returns>The resolved value.</returns>
		public static object ResolveValue(RenderContext context, TemplateData templateData, string expression, bool isVariableLookup)
		{
			if (isVariableLookup && !string.IsNullOrEmpty(expression) && !expression.StartsWith("root."))
			{
				return context.GetVariable(expression);
			}
			
			if (isVariableLookup && !string.IsNullOrEmpty(expression) && expression.StartsWith("root."))
			{
				context = context.RootRenderContext ?? context;
				templateData = context.TemplateData;
				expression = expression.Substring(5);
			}

			var modelMetadata = ExpressionMetadataProvider.FromStringExpression(expression, templateData, context.ModelMetadataProvider);
			if (modelMetadata == null)
			{
				return null;
			}
			return modelMetadata.Model;
		}