Skip to content

Commit 9da32eb

Browse files
Handle multiple selector models. Fixes #896
1 parent aed5f26 commit 9da32eb

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/AspNetCore/WebApi/src/Asp.Versioning.Mvc.ApiExplorer/VersionedApiDescriptionProvider.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,13 @@ protected virtual bool ShouldExploreAction( ActionDescriptor actionDescriptor, A
9494
protected virtual void PopulateApiVersionParameters( ApiDescription apiDescription, ApiVersion apiVersion )
9595
{
9696
var parameterSource = Options.ApiVersionParameterSource;
97-
var context = new ApiVersionParameterDescriptionContext( apiDescription, apiVersion, ModelMetadata, Options );
97+
var context = new ApiVersionParameterDescriptionContext( apiDescription, apiVersion, ModelMetadata, Options )
98+
{
99+
ConstraintResolver = constraintResolver,
100+
};
98101

99-
context.ConstraintResolver = constraintResolver;
100102
parameterSource.AddParameters( context );
103+
apiDescription.TryUpdateRelativePathAndRemoveApiVersionParameter( Options );
101104
}
102105

103106
/// <summary>
@@ -159,7 +162,6 @@ public virtual void OnProvidersExecuted( ApiDescriptionProviderContext context )
159162

160163
groupResult.SetApiVersion( version );
161164
PopulateApiVersionParameters( groupResult, version );
162-
groupResult.TryUpdateRelativePathAndRemoveApiVersionParameter( Options );
163165
groupResults.Add( groupResult );
164166
}
165167
}

src/AspNetCore/WebApi/src/Asp.Versioning.Mvc/ApplicationModels/ModelExtensions.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,16 @@ public static ApiVersionModel GetApiVersionModel( this ControllerModel controlle
3737

3838
internal static void AddEndpointMetadata( this ActionModel action, object metadata )
3939
{
40-
SelectorModel selector;
40+
var selectors = action.Selectors;
4141

42-
if ( action.Selectors.Count == 0 )
42+
if ( selectors.Count == 0 )
4343
{
44-
action.Selectors.Add( selector = new() );
44+
selectors.Add( new() );
4545
}
46-
else
46+
47+
for ( var i = 0; i < selectors.Count; i++ )
4748
{
48-
selector = action.Selectors[0];
49+
selectors[i].EndpointMetadata.Add( metadata );
4950
}
50-
51-
selector.EndpointMetadata.Add( metadata );
5251
}
5352
}

0 commit comments

Comments
 (0)