Files
acceptance-tests
data
debian
docs
external
Newtonsoft.Json
api-doc-tools
api-snapshot
aspnetwebstack
packages
src
Common
Microsoft.Web.Helpers
Microsoft.Web.Http.Data
Microsoft.Web.Http.Data.EntityFramework
Microsoft.Web.Http.Data.Helpers
Microsoft.Web.Mvc
Microsoft.Web.WebPages.OAuth
SPA
System.Json
System.Net.Http.Formatting
System.Web.Helpers
System.Web.Http
Controllers
Dependencies
Description
Dispatcher
Filters
Hosting
Internal
CollectionModelBinderUtil.cs
DataTypeUtil.cs
HttpActionContextExtensions.cs
HttpParameterBindingExtensions.cs
MemberInfoExtensions.cs
ParameterInfoExtensions.cs
TypeActivator.cs
TypeDescriptorHelper.cs
TypeHelper.cs
UriQueryUtility.cs
Metadata
ModelBinding
Properties
Query
Routing
Services
Tracing
Validation
ValueProviders
AcceptVerbsAttribute.cs
ActionNameAttribute.cs
AllowAnonymousAttribute.cs
ApiController.cs
AuthorizeAttribute.cs
FromBodyAttribute.cs
FromUriAttribute.cs
GlobalSuppressions.cs
HttpBindNeverAttribute.cs
HttpBindRequiredAttribute.cs
HttpConfiguration.cs
HttpDeleteAttribute.cs
HttpGetAttribute.cs
HttpHeadAttribute.cs
HttpOptionsAttribute.cs
HttpPatchAttribute.cs
HttpPostAttribute.cs
HttpPutAttribute.cs
HttpRequestMessageExtensions.cs
HttpResponseException.cs
HttpResponseMessageExtensions.cs
HttpRouteCollection.cs
HttpRouteCollectionExtensions.cs
HttpServer.cs
IncludeErrorDetailPolicy.cs
Modelbinding_ClassDiagram.cd
NonActionAttribute.cs
QueryableAttribute.cs
RouteParameter.cs
ServicesExtensions.cs
Settings.StyleCop
System.Web.Http.csproj
packages.config
System.Web.Http.SelfHost
System.Web.Http.WebHost
System.Web.Mvc
System.Web.Razor
System.Web.WebPages
System.Web.WebPages.Administration
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
WebMatrix.Data
WebMatrix.WebData
AptcaCommonAssemblyInfo.cs
CodeAnalysisDictionary.xml
CommonAssemblyInfo.cs
CommonResources.Designer.cs
CommonResources.resx
DynamicHelper.cs
ExceptionHelper.cs
GlobalSuppressions.cs
HashCodeCombiner.cs
IVirtualPathUtility.cs
MimeMapping.cs
RS.cs
Settings.StyleCop
Strict.ruleset
TransparentCommonAssemblyInfo.cs
VirtualPathUtilityWrapper.cs
WebHelpers.ruleset
test
tools
.gitattributes
.gitignore
License.txt
README.md
Runtime.msbuild
Runtime.sln
Runtime.xunit
Settings.StyleCop
build.cmd
binary-reference-assemblies
bockbuild
boringssl
cecil
cecil-legacy
corefx
corert
ikdasm
ikvm
linker
nuget-buildtasks
nunit-lite
roslyn-binaries
rx
xunit-binaries
ikvm-native
libgc
llvm
m4
man
mcs
mk
mono
msvc
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
linux-packaging-mono/external/aspnetwebstack/src/System.Web.Http/Internal/HttpActionContextExtensions.cs
Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

41 lines
1.6 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Web.Http.Controllers;
using System.Web.Http.Metadata;
using System.Web.Http.ModelBinding;
namespace System.Web.Http.Internal
{
internal static class HttpActionContextExtensions
{
public static bool TryBindStrongModel<TModel>(this HttpActionContext actionContext, ModelBindingContext parentBindingContext, string propertyName, ModelMetadataProvider metadataProvider, out TModel model)
{
if (actionContext == null)
{
throw Error.ArgumentNull("actionContext");
}
ModelBindingContext propertyBindingContext = new ModelBindingContext(parentBindingContext)
{
ModelMetadata = metadataProvider.GetMetadataForType(null, typeof(TModel)),
ModelName = ModelBindingHelper.CreatePropertyModelName(parentBindingContext.ModelName, propertyName)
};
IModelBinder binder;
if (actionContext.TryGetBinder(propertyBindingContext, out binder))
{
if (binder.BindModel(actionContext, propertyBindingContext))
{
object untypedModel = propertyBindingContext.Model;
model = ModelBindingHelper.CastOrDefault<TModel>(untypedModel);
parentBindingContext.ValidationNode.ChildNodes.Add(propertyBindingContext.ValidationNode);
return true;
}
}
model = default(TModel);
return false;
}
}
}