This commit is contained in:
parent
61c5f2bad4
commit
90d8f96b3f
|
|
@ -343,7 +343,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
||||||
|
|
||||||
if (updatedDefaults.TryGetValue(parameter.Name, out var newDefault))
|
if (updatedDefaults.TryGetValue(parameter.Name, out var newDefault))
|
||||||
{
|
{
|
||||||
if (parameter.Default != null)
|
if (parameter.Default != null && !Equals(newDefault, parameter.Default))
|
||||||
{
|
{
|
||||||
var message = Resources.FormatTemplateRoute_CannotHaveDefaultValueSpecifiedInlineAndExplicitly(parameter.Name);
|
var message = Resources.FormatTemplateRoute_CannotHaveDefaultValueSpecifiedInlineAndExplicitly(parameter.Name);
|
||||||
throw new InvalidOperationException(message);
|
throw new InvalidOperationException(message);
|
||||||
|
|
@ -360,7 +360,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
||||||
|
|
||||||
if (parameter.Default != null)
|
if (parameter.Default != null)
|
||||||
{
|
{
|
||||||
updatedDefaults.Add(parameter.Name, parameter.Default);
|
updatedDefaults[parameter.Name] = parameter.Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!updatedParameterPolicies.TryGetValue(parameter.Name, out var parameterConstraints) &&
|
if (!updatedParameterPolicies.TryGetValue(parameter.Name, out var parameterConstraints) &&
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Pattern_DuplicateDefaultValue_Throws()
|
public void Pattern_DifferentDuplicateDefaultValue_Throws()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var template = "{a=13}/{b}/{c}";
|
var template = "{a=13}/{b}/{c}";
|
||||||
|
|
@ -90,6 +90,29 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
||||||
ex.Message);
|
ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Pattern_SameDuplicateDefaultValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var template = "{a=13}/{b}/{c}";
|
||||||
|
var defaults = new { a = "13", };
|
||||||
|
var constraints = new { };
|
||||||
|
|
||||||
|
var original = RoutePatternFactory.Parse(template);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var actual = RoutePatternFactory.Pattern(
|
||||||
|
original.RawText,
|
||||||
|
defaults,
|
||||||
|
constraints,
|
||||||
|
original.PathSegments);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Collection(
|
||||||
|
actual.Defaults,
|
||||||
|
kvp => { Assert.Equal("a", kvp.Key); Assert.Equal("13", kvp.Value); });
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Pattern_OptionalParameterDefaultValue_Throws()
|
public void Pattern_OptionalParameterDefaultValue_Throws()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue