private void ProcessOpeningBrace()
        {
            Pos++;
            if (Pos < TemplateString.Length && TemplateString[Pos] == '{')
            {
                Pos++;
                FormatBuilder.Append("{{");
                OpeningBraceIndex = TemplateString.IndexOf("{", Pos);
                return;
            }

            if (ClosingBraceIndex < 0)
            {
                FormatBuilder.Append("{{");
                OpeningBraceIndex = TemplateString.IndexOf("{", Pos);
                return;
            }

            var selectorExpression = TemplateString.Substring(Pos, ClosingBraceIndex - Pos);
            var valueSelector      = CreateValueSelector(selectorExpression);

            FormatBuilder.Append("{" + ValueSelectors.Count + "}");
            ValueSelectors.Add(valueSelector);

            Pos = ClosingBraceIndex + 1;
            OpeningBraceIndex = TemplateString.IndexOf("{", Pos);
            ClosingBraceIndex = TemplateString.IndexOf("}", Pos);
        }
示例#2
0
        public MvcValueProvider(ActionContext actionContext)
            : base(actionContext.HttpContext)
        {
            ActionContext          = actionContext;
            _Values                = new Dictionary <string, object>();
            _ModelBinderFactory    = actionContext.HttpContext.RequestServices.GetRequiredService <IModelBinderFactory>();
            _ModelMetadataProvider = actionContext.HttpContext.RequestServices.GetRequiredService <IModelMetadataProvider>();

            ValueSelectors.Insert(0, new HttpRouteValueValueSelector(HttpContext));
            ValueSelectors.Add(new HttpRouteDataTokenValueSelector(HttpContext));
        }