Add culture constructor to RouteValueProvider
This commit is contained in:
parent
239e2202e1
commit
366dbde378
|
|
@ -21,9 +21,21 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bindingSource">The <see cref="BindingSource"/> of the data.</param>
|
/// <param name="bindingSource">The <see cref="BindingSource"/> of the data.</param>
|
||||||
/// <param name="values">The values.</param>
|
/// <param name="values">The values.</param>
|
||||||
|
/// <remarks>Sets <see cref="Culture"/> to <see cref="CultureInfo.InvariantCulture" />.</remarks>
|
||||||
public RouteValueProvider(
|
public RouteValueProvider(
|
||||||
BindingSource bindingSource,
|
BindingSource bindingSource,
|
||||||
RouteValueDictionary values)
|
RouteValueDictionary values)
|
||||||
|
: this(bindingSource, values, CultureInfo.InvariantCulture)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new <see cref="RouteValueProvider"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bindingSource">The <see cref="BindingSource"/> of the data.</param>
|
||||||
|
/// <param name="values">The values.</param>
|
||||||
|
/// <param name="culture">The culture for route value.</param>
|
||||||
|
public RouteValueProvider(BindingSource bindingSource, RouteValueDictionary values, CultureInfo culture)
|
||||||
: base(bindingSource)
|
: base(bindingSource)
|
||||||
{
|
{
|
||||||
if (bindingSource == null)
|
if (bindingSource == null)
|
||||||
|
|
@ -36,7 +48,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
throw new ArgumentNullException(nameof(values));
|
throw new ArgumentNullException(nameof(values));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (culture == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(culture));
|
||||||
|
}
|
||||||
|
|
||||||
_values = values;
|
_values = values;
|
||||||
|
Culture = culture;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected PrefixContainer PrefixContainer
|
protected PrefixContainer PrefixContainer
|
||||||
|
|
@ -52,6 +70,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CultureInfo Culture { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override bool ContainsPrefix(string key)
|
public override bool ContainsPrefix(string key)
|
||||||
{
|
{
|
||||||
|
|
@ -70,7 +90,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
if (_values.TryGetValue(key, out value))
|
if (_values.TryGetValue(key, out value))
|
||||||
{
|
{
|
||||||
var stringValue = value as string ?? value?.ToString() ?? string.Empty;
|
var stringValue = value as string ?? value?.ToString() ?? string.Empty;
|
||||||
return new ValueProviderResult(stringValue, CultureInfo.InvariantCulture);
|
return new ValueProviderResult(stringValue, Culture);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using Microsoft.AspNetCore.Routing;
|
using Microsoft.AspNetCore.Routing;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -61,6 +62,41 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
Assert.Equal(string.Empty, (string)result);
|
Assert.Equal(string.Empty, (string)result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void GetValue_ReturnsValue_WithDefaultCulture()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var values = new RouteValueDictionary(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
{ "test-key", "test-value"}
|
||||||
|
});
|
||||||
|
var provider = new RouteValueProvider(BindingSource.Query, values);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = provider.GetValue("test-key");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(CultureInfo.InvariantCulture, result.Culture);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void GetValue_ReturnsValue_WithCulture()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var values = new RouteValueDictionary(new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
{ "test-key", "test-value"}
|
||||||
|
});
|
||||||
|
var culture = new CultureInfo("fr-FR");
|
||||||
|
var provider = new RouteValueProvider(BindingSource.Query, values, culture);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = provider.GetValue("test-key");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(new CultureInfo("fr-FR"), result.Culture);
|
||||||
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData("foo")]
|
[InlineData("foo")]
|
||||||
[InlineData("bar")]
|
[InlineData("bar")]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue