Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
using System.Text.Json;

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Source-Build (Managed))

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS arm64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinder.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Primitives;

namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders;

/// <summary>
/// A generic ModelBinder that supports both 'application/json' and 'multipart/form-data' content types.
/// For multipart requests, it expects a 'payload' field containing a JSON object.
/// Optionally, the target model can implement <see cref="IFormFileReceiver"/> to receive uploaded files from the form.
/// </summary>
public class FromFormOrJsonModelBinder<T> : IModelBinder where T : class
{
private static readonly JsonSerializerOptions _defaultJsonOptions = new() { PropertyNameCaseInsensitive = true };

public async Task BindModelAsync(ModelBindingContext bindingContext)
{
var request = bindingContext.HttpContext.Request;
var modelName = bindingContext.ModelName;

if (string.IsNullOrEmpty(request.ContentType))
{
bindingContext.ModelState.AddModelError(modelName, "Missing Content-Type header.");
bindingContext.Result = ModelBindingResult.Failed();
return;
}

try
{
T? model = null;

if (request.ContentType.StartsWith("multipart/form-data", StringComparison.OrdinalIgnoreCase))
{
var form = await request.ReadFormAsync(bindingContext.HttpContext.RequestAborted);

if (form.TryGetValue("payload", out var payloadJson) && !StringValues.IsNullOrEmpty(payloadJson))
{
model = JsonSerializer.Deserialize<T>(payloadJson.ToString(), _defaultJsonOptions);
}

if (model is IFormFileReceiver receiver)
{
receiver.SetFiles(form.Files);
}
}
else if (request.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase))
{
model = await JsonSerializer.DeserializeAsync<T>(
request.Body,
_defaultJsonOptions,
bindingContext.HttpContext.RequestAborted
);
}
else
{
bindingContext.ModelState.AddModelError(modelName, $"Unsupported Content-Type '{request.ContentType}'.");
bindingContext.Result = ModelBindingResult.Failed();
return;
}

if (model is null)
{
bindingContext.ModelState.AddModelError(modelName, "Could not deserialize the request body.");
bindingContext.Result = ModelBindingResult.Failed();
return;
}

bindingContext.Result = ModelBindingResult.Success(model);
}
catch (JsonException)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, "Invalid JSON payload.");
bindingContext.Result = ModelBindingResult.Failed();
}
catch (Exception)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, "Unexpected error during model binding.");
bindingContext.Result = ModelBindingResult.Failed();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System;

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Source-Build (Managed))

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS arm64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)
using Microsoft.AspNetCore.Mvc.ModelBinding;
using System.Linq;

namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
{
/// <summary>
/// Provides a model binder for parameters annotated with FromFormOrJsonAttribute.
/// </summary>
public class FromFormOrJsonModelBinderProvider : IModelBinderProvider
{
public IModelBinder? GetBinder(ModelBinderProviderContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}

var parameter = context.Metadata.ParameterInfo;

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Source-Build (Managed))

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS arm64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 19 in src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs#L19

src/Mvc/Mvc.Core/src/ModelBinding/Binders/FromFormOrJsonModelBinderProvider.cs(19,46): error CS1061: (NETCORE_ENGINEERING_TELEMETRY=Build) 'ModelMetadata' does not contain a definition for 'ParameterInfo' and no accessible extension method 'ParameterInfo' accepting a first argument of type 'ModelMetadata' could be found (are you missing a using directive or an assembly reference?)
var binderAttribute = parameter?.GetCustomAttributes(typeof(FromFormOrJsonAttribute), true)
.FirstOrDefault() as FromFormOrJsonAttribute;

if (binderAttribute != null)
{
var binderType = typeof(FromFormOrJsonModelBinder<>).MakeGenericType(context.Metadata.ModelType);
return (IModelBinder?)Activator.CreateInstance(binderType);
}

return null;
}
}
}
12 changes: 12 additions & 0 deletions src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc.ModelBinding;

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Source-Build (Managed))

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS arm64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux x64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl x64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS x64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/FromFormOrJsonAttribute.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

namespace Microsoft.AspNetCore.Mvc;

/// <summary>
/// Indicates that a parameter should be bound using the FromFormOrJsonModelBinder.
/// </summary>
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
public sealed class FromFormOrJsonAttribute : Attribute, IBindingSourceMetadata
{
public BindingSource BindingSource => BindingSource.Custom;
}
11 changes: 11 additions & 0 deletions src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Microsoft.AspNetCore.Http;

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Source-Build (Managed))

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux ARM)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS arm64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux x64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl x64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: Linux Musl ARM64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Build: macOS x64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-ci (Build Test: Ubuntu x64)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

Check failure on line 1 in src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs

View check run for this annotation

Azure Pipelines / aspnetcore-quarantined-pr (Tests: macOS)

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs#L1

src/Mvc/Mvc.Core/src/ModelBinding/IFormFileReceiver.cs(1,1): error IDE0073: (NETCORE_ENGINEERING_TELEMETRY=Build) A source file is missing a required header. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0073)

namespace Microsoft.AspNetCore.Mvc.ModelBinding;

/// <summary>
/// Optional interface for models that wish to receive uploaded files from multipart/form-data requests.
/// </summary>
public interface IFormFileReceiver
{
void SetFiles(IFormFileCollection files);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
using System.IO;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;

using Xunit;

namespace Microsoft.AspNetCore.Mvc.ModelBinding.Tests;

public class FromFormOrJsonModelBinderTest
{
private static DefaultHttpContext CreateHttpContextWithJson<T>(T payload)
{
var context = new DefaultHttpContext();
context.Request.ContentType = "application/json";

var json = JsonSerializer.Serialize(payload);
var bytes = Encoding.UTF8.GetBytes(json);
context.Request.Body = new MemoryStream(bytes);

return context;
}

private static DefaultHttpContext CreateHttpContextWithForm<T>(T payload)
{
var context = new DefaultHttpContext();
context.Request.ContentType = "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW";
var form = new FormCollection(new Dictionary<string, Microsoft.Extensions.Primitives.StringValues>
{
{ "payload", JsonSerializer.Serialize(payload) }
});

context.Request.Form = form;
return context;
}

public class SampleDto
{
public string Name { get; set; }
}

[Fact]
public async Task BindsFromJsonPayload()
{
// Arrange
var dto = new SampleDto { Name = "Json Test" };
var httpContext = CreateHttpContextWithJson(dto);
var bindingContext = GetBindingContext<SampleDto>(httpContext);

var binder = new FromFormOrJsonModelBinder<SampleDto>();

// Act
await binder.BindModelAsync(bindingContext);

// Assert
Assert.True(bindingContext.Result.IsModelSet);
var result = Assert.IsType<SampleDto>(bindingContext.Result.Model);
Assert.Equal("Json Test", result.Name);
}

private static DefaultModelBindingContext GetBindingContext<T>(HttpContext httpContext)
{
var metadataProvider = new EmptyModelMetadataProvider();
var modelMetadata = metadataProvider.GetMetadataForType(typeof(T));
return new DefaultModelBindingContext
{
ModelMetadata = modelMetadata,
ModelName = "model",
ModelState = new ModelStateDictionary(),
ValueProvider = new SimpleValueProvider(),
ActionContext = new ActionContext
{
HttpContext = httpContext,
RouteData = new Microsoft.AspNetCore.Routing.RouteData(),
ActionDescriptor = new Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor()
},
FieldName = "model",
BindingSource = BindingSource.Custom,
HttpContext = httpContext,
};
}
}
Loading