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) + "; }"); } } }
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); } }