aspnetcore mvc binders
This commit is contained in:
parent
581f17f448
commit
6ab2187129
@ -13,6 +13,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
||||
LICENSE.md = LICENSE.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoweredSoft.ObjectStorage.MongoDB.AspNetCore", "PoweredSoft.ObjectStorage.MongoDB.AspNetCore\PoweredSoft.ObjectStorage.MongoDB.AspNetCore.csproj", "{E69D559E-72F3-47A9-ABE5-D49FD8412DE4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
@ -31,5 +33,9 @@ Global
|
||||
{D8CB2E20-7298-4EEB-9694-C54654B1BD1C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D8CB2E20-7298-4EEB-9694-C54654B1BD1C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D8CB2E20-7298-4EEB-9694-C54654B1BD1C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E69D559E-72F3-47A9-ABE5-D49FD8412DE4}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E69D559E-72F3-47A9-ABE5-D49FD8412DE4}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E69D559E-72F3-47A9-ABE5-D49FD8412DE4}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E69D559E-72F3-47A9-ABE5-D49FD8412DE4}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
@ -0,0 +1,18 @@
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace PoweredSoft.ObjectStorage.MongoDB.AspNetCore
|
||||
{
|
||||
public class ObjectIdModelBinder : IModelBinder
|
||||
{
|
||||
public Task BindModelAsync(ModelBindingContext bindingContext)
|
||||
{
|
||||
var result = bindingContext.ValueProvider.GetValue(bindingContext.FieldName);
|
||||
|
||||
bindingContext.Result = ModelBindingResult.Success(new ObjectId(result.FirstValue));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace PoweredSoft.ObjectStorage.MongoDB.AspNetCore
|
||||
{
|
||||
public class ObjectIdModelBinderProvider : IModelBinderProvider
|
||||
{
|
||||
public IModelBinder GetBinder(ModelBinderProviderContext context)
|
||||
{
|
||||
if (context == null)
|
||||
throw new ArgumentNullException(nameof(context));
|
||||
|
||||
if (context.Metadata.ModelType == typeof(ObjectId))
|
||||
return new ObjectIdModelBinder();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Copyright>Powered Softwares Inc.</Copyright>
|
||||
<PackageLicenseUrl>https://github.com/PoweredSoft/ObjectStorage/blob/master/LICENSE.md</PackageLicenseUrl>
|
||||
<PackageProjectUrl>https://github.com/PoweredSoft/ObjectStorage</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/PoweredSoft/ObjectStorage/PoweredSoft.ObjectStorage.MongoDB.AspNetCore</RepositoryUrl>
|
||||
<RepositoryType>github</RepositoryType>
|
||||
<PackageIconUrl>https://secure.gravatar.com/avatar/4e32f73820c16718909a06c2927f1f8b?s=512&r=g&d=retro</PackageIconUrl>
|
||||
<Version>1.0.0$(VersionSuffix)</Version>
|
||||
<Product>PoweredSoft.ObjectStorage.MongoDB.AspNetCore</Product>
|
||||
<Description>Mongo DB Implementation of IObjectStorageClient</Description>
|
||||
<PackageId>PoweredSoft.ObjectStorage.MongoDB.AspNetCore</PackageId>
|
||||
<PackageReleaseNotes>N/A</PackageReleaseNotes>
|
||||
<PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
|
||||
<Company>Powered Softwares Inc.</Company>
|
||||
<Authors>David Lebee</Authors>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.2" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
|
||||
<PackageReference Include="MongoDB.Driver" Version="2.7.3" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace PoweredSoft.ObjectStorage.MongoDB.AspNetCore
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IMvcBuilder AddMongoDBMvcBinders(this IMvcBuilder mvcBuilder)
|
||||
{
|
||||
mvcBuilder.AddMvcOptions(options =>
|
||||
{
|
||||
options.ModelBinderProviders.Insert(0, new ObjectIdModelBinderProvider());
|
||||
});
|
||||
|
||||
return mvcBuilder;
|
||||
}
|
||||
}
|
||||
}
|
@ -9,4 +9,5 @@ choices.
|
||||
Full Version | NuGet | NuGet Install
|
||||
------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------:
|
||||
PoweredSoft.ObjectStorage.Core | <a href="https://www.nuget.org/packages/PoweredSoft.ObjectStorage.Core/" target="_blank">[![NuGet](https://img.shields.io/nuget/v/PoweredSoft.ObjectStorage.Core.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/PoweredSoft.ObjectStorage.Core/)</a> | ```PM> Install-Package PoweredSoft.ObjectStorage.Core```
|
||||
PoweredSoft.ObjectStorage.MongoDB | <a href="https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB/" target="_blank">[![NuGet](https://img.shields.io/nuget/v/PoweredSoft.ObjectStorage.MongoDB.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB/)</a> | ```PM> Install-Package PoweredSoft.ObjectStorage.MongoDB```
|
||||
PoweredSoft.ObjectStorage.MongoDB | <a href="https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB/" target="_blank">[![NuGet](https://img.shields.io/nuget/v/PoweredSoft.ObjectStorage.MongoDB.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB/)</a> | ```PM> Install-Package PoweredSoft.ObjectStorage.MongoDB```
|
||||
PoweredSoft.ObjectStorage.MongoDB.AspNetCore | <a href="https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB.AspNetCore/" target="_blank">[![NuGet](https://img.shields.io/nuget/v/PoweredSoft.ObjectStorage.MongoDB.AspNetCore.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/PoweredSoft.ObjectStorage.MongoDB.AspNetCore/)</a> | ```PM> Install-Package PoweredSoft.ObjectStorage.MongoDB.AspNetCore```
|
Loading…
Reference in New Issue
Block a user