Change RoutePattern to not throw when inline and arg default value are the same (#747)
This commit is contained in:
parent
a0aa61fd10
commit
15e46ad323
|
|
@ -343,7 +343,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
|||
|
||||
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);
|
||||
throw new InvalidOperationException(message);
|
||||
|
|
@ -360,7 +360,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
|||
|
||||
if (parameter.Default != null)
|
||||
{
|
||||
updatedDefaults.Add(parameter.Name, parameter.Default);
|
||||
updatedDefaults[parameter.Name] = parameter.Default;
|
||||
}
|
||||
|
||||
if (!updatedParameterPolicies.TryGetValue(parameter.Name, out var parameterConstraints) &&
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void Pattern_DuplicateDefaultValue_Throws()
|
||||
public void Pattern_DifferentDuplicateDefaultValue_Throws()
|
||||
{
|
||||
// Arrange
|
||||
var template = "{a=13}/{b}/{c}";
|
||||
|
|
@ -90,6 +90,29 @@ namespace Microsoft.AspNetCore.Routing.Patterns
|
|||
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]
|
||||
public void Pattern_OptionalParameterDefaultValue_Throws()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue