Пример #1
0
        public async Task ApplyAsync(IAbstractModelApplicationRequestContext context, AbstractModel abstractModel,
                                     CancellationToken cancellationToken)
        {
            var formCollection = await new FormFeature(context.Form).ReadFormAsync(cancellationToken);

            foreach (var key in formCollection.Keys)
            {
                var newModel = new AbstractModel(key);

                foreach (var value in formCollection[key])
                {
                    newModel.AddValue(value);
                }

                abstractModel.Add(newModel);
            }

            foreach (var file in formCollection.Files ?? new FormFileCollection())
            {
                var name = file.Name;

                if (name == null && ContentDispositionHeaderValue.TryParse(file.ContentDisposition,
                                                                           out var contentDispositionHeaderValue))
                {
                    name = contentDispositionHeaderValue.Name.Value;

                    if (name.StartsWith("\"") && name.EndsWith("\""))
                    {
                        name = name.Substring(1, name.Length - 2);
                    }
                }

                if (name != null)
                {
                    var newModel = new AbstractModel(name);
                    newModel.AddObjectValue(file);
                    abstractModel.Add(newModel);
                }
            }
        }