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