public KnockoutTagBuilder <TModel> DropDownList <TItem>(Expression <Func <TModel, IList <TItem> > > options, object htmlAttributes, Expression <Func <TModel, TItem, object> > optionsText) { var tagBuilder = new KnockoutTagBuilder <TModel>(Context, "select", InstanceNames, Aliases); tagBuilder.ApplyAttributes(htmlAttributes); if (options != null) { tagBuilder.Options(Expression.Lambda <Func <TModel, IEnumerable> >(options.Body, options.Parameters)); } if (optionsText != null) { var data = CreateData(); var keys = data.Aliases.Keys.ToList(); if (!string.IsNullOrEmpty(Context.GetInstanceName())) { foreach (var key in keys) { data.Aliases[Context.GetInstanceName() + "." + key] = data.Aliases[key]; data.Aliases.Remove(key); } } data.InstanceNames = new[] { Context.GetInstanceName(), "item" }; tagBuilder.OptionsText("function(item) { return " + KnockoutExpressionConverter.Convert(optionsText, data) + "; }"); } return(tagBuilder); }
private static string ExpressionToString(Type modelType, Expression expression) { var data = KnockoutExpressionData.CreateConstructorData(); data.Aliases[modelType.FullName] = "this"; return(KnockoutExpressionConverter.Convert(expression, data)); }
public KnockoutIfContext <TModel> If(Expression <Func <TModel, bool> > binding) { var regionContext = new KnockoutIfContext <TModel>(ViewContext, KnockoutExpressionConverter.Convert(binding)); regionContext.InStack = false; regionContext.WriteStart(ViewContext.Writer); return(regionContext); }
private static string GetGetExpression(Type modelType, object model, MethodInfo method) { var expression = method.Invoke(model, null) as Expression; var data = KnockoutExpressionData.CreateConstructorData(); data.Aliases[modelType.FullName] = "this"; return(KnockoutExpressionConverter.Convert(expression, data)); }
public KnockoutForeachContext <TItem> Foreach <TItem>(Expression <Func <TModel, IList <TItem> > > binding) { var expression = KnockoutExpressionConverter.Convert(binding, CreateData()); var regionContext = new KnockoutForeachContext <TItem>(ViewContext, expression); regionContext.WriteStart(ViewContext.Writer); regionContext.ContextStack = ContextStack; ContextStack.Add(regionContext); return(regionContext); }
public KnockoutWithContext <TItem> With <TItem>(Expression <Func <TModel, TItem> > binding) { Func <TModel, TItem> func = binding.Compile(); var model = (TItem)func((TModel)ViewContext.ViewData.Model); var expression = KnockoutExpressionConverter.Convert(binding, CreateData()); var regionContext = new KnockoutWithContext <TItem>(ViewContext, expression, model); regionContext.WriteStart(ViewContext.Writer); regionContext.ContextStack = ContextStack; ContextStack.Add(regionContext); return(regionContext); }
private static IEnumerable <IPropertyConfig> GetMetaDataFor <TProperty, TItem>(Expression <Func <TProperty, TItem> > binding) { var ViewModelConfiguratorFactory = DependencyResolver.Current.GetService <IViewModelConfiguratorFactory>(); var metadata = ViewModelConfiguratorFactory.GetViewModelConfigurator(typeof(TProperty)); if (metadata != null) { var name = KnockoutExpressionConverter.Convert(binding, null); return(metadata.CreateDescriptor().GetConfigsForMember(name).ToList()); } return(null); }
public KnockoutTagBuilder <TModel> DropDownList <TItem>(Expression <Func <TModel, IList <TItem> > > options, object htmlAttributes = null, Expression <Func <TItem, object> > optionsText = null) { var tagBuilder = new KnockoutTagBuilder <TModel>(Context, "select", InstanceNames, Aliases); tagBuilder.ApplyAttributes(htmlAttributes); if (options != null) { tagBuilder.Options(Expression.Lambda <Func <TModel, IEnumerable> >(options.Body, options.Parameters)); } if (optionsText != null) { var data = new KnockoutExpressionData { InstanceNames = new[] { "item" } }; tagBuilder.OptionsText("function(item) { return " + KnockoutExpressionConverter.Convert(optionsText, data) + "; }"); } return(tagBuilder); }
public static string Convert(Expression expression, KnockoutExpressionData convertData = null) { var converter = new KnockoutExpressionConverter(); return(converter.LocalConvert(expression, convertData)); }
public static string Convert(Expression expression, KnockoutExpressionData convertData = null) { var converter = new KnockoutExpressionConverter(); return converter.LocalConvert(expression, convertData); }
public KnockoutScriptItem SetObservable(Expression <Func <TModel, object> > prop, string value) { string name = KnockoutExpressionConverter.Convert(prop); return(new KnockoutScriptItem(this.Context.ViewModelName + "." + name + "(" + value + ")")); }