Пример #1
0
        public IEnumerable <Expression> Process(
            PropertyInfo prop,
            IEnumerable <Expression> expressions,
            Expression modelExpression)
        {
            Expression isNotNull;

            if (prop.PropertyType.IsValueType)
            {
                if (prop.PropertyType.IsGenericType &&
                    prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>))
                {
                    isNotNull = Expression.Property(
                        Expression.Property(modelExpression, prop),
                        nameof(Nullable <int> .HasValue));
                }
                else
                {
                    return(expressions);
                }
            }
            else
            {
                isNotNull = Expression.NotEqual(
                    Expression.Property(modelExpression, prop),
                    Expression.Constant(null));
            }

            var nulled    = TR.WriteText(TR.GetFormatted(Coalesce, modelExpression));
            var notNulled = Expression.IfThenElse(isNotNull,
                                                  Expression.Block(expressions),
                                                  Expression.Block(nulled));

            return(Enumerable.Repeat(notNulled, 1));
        }
Пример #2
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression> expressions,
     Expression modelExpression)
 {
     return(expressions.Prepend(TR.WriteText(TR.GetFormatted(Prefix, modelExpression))));
 }
Пример #3
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression> expressions,
     Expression modelExpression)
 {
     return(expressions
            .Append(TR.WriteAttr("title", TR.GetFormatted(Format, modelExpression))));
 }
Пример #4
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression> expressions,
     Expression modelExpression)
 {
     return(expressions
            .Append(TR.WriteHtml("</i>"))
            .Prepend(TR.WriteHtml("<i>")));
 }
Пример #5
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression> expressions,
     Expression modelExpression)
 {
     return(expressions
            .Append(TR.WriteHtml("</span>"))
            .Prepend(TR.WriteHtml($"<span class=\"forceWidth\" style=\"max-width:{Width}em\">")));
 }
Пример #6
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression>?expressions,
     Expression modelExpression)
 {
     return(expressions
            .Prepend(TR.WriteHtml("\"></i> "))
            .Prepend(TR.WriteText(TR.GetFormatted(Class, modelExpression)))
            .Prepend(TR.WriteHtml("<i class=\"")));
 }
Пример #7
0
        public virtual IEnumerable <Expression> Process(
            PropertyInfo prop,
            IEnumerable <Expression>?expressions,
            Expression modelExpression)
        {
            var ret = Content == null
                ? TR.WriteText(Expression.Property(modelExpression, prop))
                : TR.WriteText(TR.GetFormatted(Content, modelExpression));

            return(Enumerable.Repeat(ret, 1));
        }
Пример #8
0
 public override IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression>?expressions,
     Expression modelExpression)
 {
     return(new[]
     {
         TR.WriteHtml("<i class=\""),
         TR.WriteText(Class),
         TR.WriteHtml("\"></i>"),
     });
 }
Пример #9
0
 public IEnumerable <Expression> Process(
     PropertyInfo prop,
     IEnumerable <Expression> e,
     Expression modelExpression)
 {
     if (Class != null)
     {
         e = e.Append(TR.WriteCssClass(Class));
     }
     if (Style != null)
     {
         e = e.Append(TR.WriteAttr("style", Expression.Constant(Style)));
     }
     return(e);
 }
Пример #10
0
        public IEnumerable <Expression> Process(
            PropertyInfo prop,
            IEnumerable <Expression> expressions,
            Expression modelExpression)
        {
            if (prop.PropertyType != typeof(bool) &&
                prop.PropertyType != typeof(bool?))
            {
                throw new TypeAccessException("Not bool or Nullable<bool>.");
            }
            var ifTrue  = TR.WriteText(TR.GetFormatted(IfTrue, modelExpression));
            var ifFalse = TR.WriteText(TR.GetFormatted(IfFalse, modelExpression));
            var cond    = Expression.Equal(Expression.Property(modelExpression, prop), Expression.Constant(true, prop.PropertyType));
            var display = Expression.IfThenElse(cond, ifTrue, ifFalse);

            return(Enumerable.Repeat(display, 1));
        }
Пример #11
0
        public IEnumerable <Expression> Process(
            PropertyInfo prop,
            IEnumerable <Expression> e,
            Expression modelExpression)
        {
            if (Url == null)
            {
                return(e);
            }
            var content = Url.Contains("{")
                ? TR.GetFormatted(Url, modelExpression)
                : Expression.Constant(Url);

            e = e.Append(TR.WriteHtml("</a>"));
            e = e.Prepend(TR.WriteHtml(Ajax != null
                ? $"\" data-toggle=\"ajaxWindow\" data-target=\"{Ajax}\">"
                : "\">"));
            e = e.Prepend(TR.WriteText(content));
            e = e.Prepend(TR.WriteHtml("<a href=\""));
            return(e);
        }