Merge branch 'release/aspnetcorebinders'

This commit is contained in:
David Lebee 2019-02-15 11:09:44 -06:00
commit f57b176f03
6 changed files with 91 additions and 1 deletions

View File

@ -13,6 +13,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
LICENSE.md = LICENSE.md LICENSE.md = LICENSE.md
EndProjectSection EndProjectSection
EndProject 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86 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}.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.ActiveCfg = Release|Any CPU
{D8CB2E20-7298-4EEB-9694-C54654B1BD1C}.Release|x86.Build.0 = 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 EndGlobalSection
EndGlobal EndGlobal

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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&amp;r=g&amp;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>

View File

@ -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;
}
}
}

View File

@ -9,4 +9,5 @@ choices.
Full Version | NuGet | NuGet Install 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.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```