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);
 }
 public KnockoutCheckedInputBase(KnockoutContext <TModel> context, InputType inputType, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, inputType, binding, metadata, instancesNames, aliases)
 {
     if (!(inputType == InputType.CheckBox || inputType == InputType.Radio))
     {
         throw new ArgumentException("Input type can only be checkable.");
     }
 }
Beispiel #3
0
 public void VisitNew1()
 {
     var viewContext = new ViewContext {
         Writer = new StringWriter()
     };
     var    context = new KnockoutContext <TestAttributesModel2>(viewContext);
     string apply   = context.ApplyViewModel("elementId").ToString();
     //AssertStringEquivalent("blah", apply);
 }
        public void ValueUpdateInput()
        {
            var viewContext = new ViewContext {
                Writer = new StringWriter()
            };
            var    context = new KnockoutContext <TestModel>(viewContext);
            var    binding = new KnockoutBinding <TestModel>(context);
            string bind    = context.Bind.Text(m => m.A).ValueUpdate(KnockoutValueUpdateKind.Input).BindingAttributeContent();

            AssertStringEquivalent("text : A,valueUpdate : 'input'", bind);
        }
Beispiel #5
0
        public static KnockoutTagBuilder <TModel> EditorFor <TModel>(this KnockoutContext <TModel> context, Expression <Func <TModel, object> > property, object additionalViewData = null, object htmlAttributes = null)
        {
            KnockoutTagBuilder <TModel> result = new KnockoutTagBuilder <TModel>(context, "div", null, null);

            if (property != null)
            {
                result.Value(property);
                var memberExpression = property.Body as MemberExpression;
            }

            return(result);
        }
        public void ContextTest03()
        {
            var viewContext = new ViewContext {
                Writer = new StringWriter()
            };
            var context = new KnockoutContext <TestModel>(viewContext);

            using (var subContext = context.Foreach(m => m.IntList))
            {
                string bind = subContext.Bind.Text(n => n + 1).BindingAttributeContent();
                AssertStringEquivalent("text:(parseInt($data)+parseInt(1))", bind);
            }
        }
Beispiel #7
0
        public void ContextMethod1()
        {
            var viewContext = new ViewContext {
                Writer = new StringWriter()
            };
            var context = new KnockoutContext <TestAttributesModel2>(viewContext);

            using (var subContext = context.Foreach(m => m.IntList))
            {
                string bind = subContext.Bind.Method("test", m => context.Model.Method).BindingAttributeContent();
                AssertStringEquivalent("test: $parent.method", bind);
            }
        }
        public void ContextTest01()
        {
            var viewContext = new ViewContext {
                Writer = new StringWriter()
            };
            var context = new KnockoutContext <TestModel>(viewContext);

            using (var subContext = context.With(m => m.SubModel))
            {
                using (var subSubContext = subContext.Foreach(m => m.List))
                {
                    string bind = subSubContext.Bind.Text(m => context.Model.A + subContext.Model.B + m.ToString()).BindingAttributeContent();
                    AssertStringEquivalent("text:$parents[1].A()+$parent.B()+$data", bind);
                }
            }
        }
Beispiel #9
0
        public void ContextTest01()
        {
            var viewContext = new ViewContext {
                Writer = new StringWriter()
            };
            var context = new KnockoutContext <TestAttributesModel2>(viewContext);

            using (var subContext = context.With(m => m.SubModel))
            {
                string bind = subContext.Bind.Method("test", m => context.Model.Method).BindingAttributeContent();
                AssertStringEquivalent("test: $parent.method", bind);

                using (var subSubContext = subContext.Foreach(m => m.List))
                {
                    string subBind = subSubContext.Bind.Method("subTest", m => context.Model.Method).BindingAttributeContent();
                    AssertStringEquivalent("subTest:$parents[1].method", subBind);

                    string subBind2 = subSubContext.Bind.Method("subContextTest", m => subContext.Model.Method).BindingAttributeContent();
                    AssertStringEquivalent("subContextTest:$parent.method", subBind2);
                }
            }
        }
Beispiel #10
0
        public static HtmlString ApplyWithOutScriptTag <TModel>(this KnockoutContext <TModel> context, TModel model, string bindingElementSelector = null)
        {
            var htmlString = context.Apply(model);
            var script     = htmlString.ToString();

            var scriptStartTagIndex = script.IndexOf(ScriptStartTag);

            script = script.Remove(scriptStartTagIndex, ScriptStartTag.Length);

            var scriptEndTagIndex = script.LastIndexOf(ScriptEndTag);

            script = script.Remove(scriptEndTagIndex, ScriptEndTag.Length);

            if (!string.IsNullOrWhiteSpace(bindingElementSelector))
            {
                var element = "$('" + bindingElementSelector + "')[0]";
                script = script.Replace("ko.applyBindings(viewModel);",
                                        "ko.applyBindings(viewModel, " + element + ");");
            }

            return(new HtmlString(script));
        }
 public KnockoutSelectBase(KnockoutContext <TModel> context, Expression <Func <TModel, TItem> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, FieldType.Select, binding, metadata, instancesNames, aliases)
 {
 }
Beispiel #12
0
 public KnockoutListBox(KnockoutContext <TModel> context, Expression <Func <TModel, IEnumerable> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, binding, metadata, instancesNames, aliases)
 {
 }
 public KnockoutInputBase(KnockoutContext <TModel> context, InputType inputType, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, FieldType.Input, binding, metadata, instancesNames, aliases)
 {
     this.InputType = inputType;
 }
        public void ContextTest01()
        {
            var viewContext = new ViewContext { Writer = new StringWriter() };
              var context = new KnockoutContext<TestModel>(viewContext);
              using (var subContext = context.With(m => m.SubModel))
              {
            string bind = subContext.Bind.Text(m => context.Model.A + m.ToString()).BindingAttributeContent();
            AssertStringEquivalent("text:($parent.A()+$data)", bind);

            using (var subSubContext = subContext.Foreach(m => m.List))
            {
              string subBind = subSubContext.Bind.Text(m => context.Model.A + subContext.Model.B + m.ToString()).BindingAttributeContent();
              AssertStringEquivalent("text:(($parents[1].A()+$parent.B())+$data)", subBind);
            }
              }
        }
 public void ContextTest03()
 {
     var viewContext = new ViewContext { Writer = new StringWriter() };
       var context = new KnockoutContext<TestModel>(viewContext);
       using (var subContext = context.Foreach(m => m.IntList))
       {
     string bind = subContext.Bind.Text(n => n + 1).BindingAttributeContent();
     AssertStringEquivalent("text:(parseInt($data)+parseInt(1))", bind);
       }
 }
Beispiel #16
0
 public KnockoutTextAreaBase(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metatada = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, FieldType.TextArea, binding, metatada, instancesNames, aliases)
 {
 }
Beispiel #17
0
 public KnockoutTextArea(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, List <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, binding, metadata, instancesNames, aliases)
 {
 }
Beispiel #18
0
 public KnockoutPassword(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, InputType.Password, binding, metadata, instancesNames, aliases)
 {
 }
 public KnockoutDatePicker(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base(context, InputType.Text, binding, metadata, instancesNames, aliases)
 {
     this.HtmlAttributes.Add("autocomplete", "off");
 }
 public void ValueUpdateInput()
 {
     var viewContext = new ViewContext { Writer = new StringWriter() };
     var context = new KnockoutContext<TestModel>(viewContext);
     var binding = new KnockoutBinding<TestModel>(context);
     string bind = context.Bind.Text(m => m.A).ValueUpdate(KnockoutValueUpdateKind.Input).BindingAttributeContent();
     AssertStringEquivalent("text : A,valueUpdate : 'input'", bind);
 }
Beispiel #21
0
 public KnockoutSpan(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base("span", context, binding, instancesNames, aliases)
 {
 }
Beispiel #22
0
 public KnockoutForm(KnockoutContext <TModel> context, Expression <Func <TModel, object> > binding, IEnumerable <IPropertyConfig> metadata = null, string[] instancesNames = null, Dictionary <string, string> aliases = null)
     : base("form", context, binding, instancesNames, aliases)
 {
     this.Fieldsets = new List <KnockoutFieldset>();
     this.Buttons   = new List <KnockoutButton>();
 }
Beispiel #23
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);
        }