Ejemplo n.º 1
0
 protected override void ConfigureBinding(KnockoutTagBuilder <TModel> tagBuilder)
 {
     if (this.Metadata != null)
     {
         var first = (IListSourceConfig)this.Metadata.FirstOrDefault(m => m.GetType().GetInterfaces().Any(p => p == typeof(IListSourceConfig)));
         if (first != null)
         {
             var propertyName = KnockoutExpressionConverter.Convert(Binding, null);
             propertyName += "." + first.Name;
             tagBuilder.Custom("options", propertyName, false);
             tagBuilder.OptionsText(first.OptionsText, true);
             tagBuilder.OptionsValue(first.OptionsValue, true);
         }
     }
     else
     {
         if (SelectOptions != null)
         {
             tagBuilder.Options(Expression.Lambda <Func <TModel, IEnumerable> >(SelectOptions.Body, SelectOptions.Parameters));
         }
         if (SelectOptionsText != null)
         {
             var data = new KnockoutExpressionData {
                 InstanceNames = new[] { "item" }
             };
             tagBuilder.OptionsText("function(item) { return " + KnockoutExpressionConverter.Convert(SelectOptions, data) + "; }");
         }
     }
 }
        private static string GetServerUrlExpression <TModel>(KnockoutExpressionData data, string action, string controller, string parameterName, Expression <Func <TModel, object> > parametersGetter)
        {
            if (!string.IsNullOrWhiteSpace(parameterName) && parametersGetter == null)
            {
                throw new InvalidOperationException("Url parameter getter is miss");
            }

            string expression;

            if (parametersGetter == null)
            {
                expression = "'" + GetUrlHelper().Action(action, controller) + "'";
            }
            else
            {
                var getterExpression = KnockoutExpressionConverter.Convert(parametersGetter, data);
                if (string.IsNullOrWhiteSpace(getterExpression))
                {
                    throw new InvalidOperationException("Url parameter getter is invalid");
                }

                if (parametersGetter.Body.NodeType == ExpressionType.MemberAccess)
                {
                    getterExpression += "()";
                }
                expression = GetUrl(action, controller, parameterName, getterExpression);
            }
            return(expression);
        }
Ejemplo n.º 3
0
 public KnockoutFieldBase(KnockoutContext <TModel> context, FieldType type, Expression <Func <TModel, TItem> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(type.ToString().ToLowerInvariant(), context, binding, instancesNames, aliases)
 {
     //this.Type = type;
     this.Metadata = metadata;
     this.Label    = new KnockoutLabel(this, metadata);
     this.Name     = KnockoutExpressionConverter.Convert(Binding, null);
 }
Ejemplo n.º 4
0
        private void RunTest(Expression expression,
                             string expected,
                             KnockoutExpressionData data = null)
        {
            string actual = KnockoutExpressionConverter.Convert(expression, data);

            AssertStringEquivalent(expected, actual);
        }
        private static string GetServerUrlExpression <TModel>(KnockoutExpressionData data, Expression <Func <TModel, string> > urlGetter)
        {
            var expression = KnockoutExpressionConverter.Convert(urlGetter, data);

            if (string.IsNullOrWhiteSpace(expression))
            {
                throw new InvalidOperationException("Url getter is invalid");
            }
            return(expression);
        }
Ejemplo n.º 6
0
        protected override void ConfigureBinding(KnockoutTagBuilder <TModel> tagBuilder)
        {
            Func <IPropertyConfig, bool> func = m => m.GetType().GetInterfaces().Any(p => p == typeof(IFormatConfig));

            if (this.Metadata != null && this.Metadata.Any(func))
            {
                var first        = (IFormatConfig)this.Metadata.First(func);
                var propertyName = KnockoutExpressionConverter.Convert(Binding, null) + "." + first.Name;
                tagBuilder.Custom("value", propertyName, false);
            }
            else
            {
                base.ConfigureBinding(tagBuilder);
            }
        }
Ejemplo n.º 7
0
        public static KnockoutForeachContext <TItem> ForeachEnumerable <TModel, TItem>(this KnockoutContext <TModel> context, Expression <Func <TModel, IEnumerable <TItem> > > binding)
        {
            var viewContext            = (ViewContext)context.GetFieldValue("viewContext");
            var knockoutForeachContext = new KnockoutForeachContext <TItem>(
                viewContext,
                KnockoutExpressionConverter.Convert(binding, context.CreateData())
                );

            knockoutForeachContext.WriteStart(viewContext.Writer);

            var contextStackProperty = context.GetType().Property("ContextStack");
            var contextStack         = (List <IKnockoutContext>)contextStackProperty.Get(context);

            contextStackProperty.Set(context, contextStack);

            contextStack.Add(knockoutForeachContext);
            return(knockoutForeachContext);
        }
Ejemplo n.º 8
0
        protected override void ConfigureBinding(KnockoutTagBuilder <TModel> tagBuilder)
        {
            var propertyName = KnockoutExpressionConverter.Convert(Binding, null) + "." + "tooltip";

            tagBuilder.Tooltip(propertyName);
        }