В моей базе данных я сохраняю тип и значение значения в строках, а затем при необходимости преобразую его обратно в динамический объект. Хотя конверсия кажется неудачной при использовании французско-канадского маршрута.
Ниже приведены инструкции по быстрому воссозданию ошибки с использованием шаблона основного веб-приложения ASP.NET (2.1 MVC):
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-CA"),
new CultureInfo("fr-CA")
};
options.DefaultRequestCulture = new RequestCulture("en-CA");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new RouteDataRequestCultureProvider()
};
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRouter(routes =>
{
routes.MapMiddlewareRoute("{culture=en-CA}/{*mvcRoute}", subApp =>
{
subApp.UseRequestLocalization(options.Value);
subApp.UseMvc(mvcRoutes =>
{
mvcRoutes.MapRoute(
name: "default",
template: "{culture=en-CA}/{controller=Home}/{action=Index}/{id?}");
});
});
});
}
HomeController.cs
[Route("{culture=en-CA}")]
public class HomeController : Controller
{
[Route("")]
public dynamic Index()
{
return Convert.ChangeType("1,0", Type.GetType("System.Decimal"));
}
}
Я заметил следующее, когда играл со строкой значения:
GET / или GET / en-CA
"1" => "1.0"
"1.0" => "1.0"
"1,0" => "10.0"
GET / FR-CA
"1" => "1.0"
"1.0" => Error
"1,0" => "1.0"
Я не хочу локализовать числа, так как мне вывести все в десятичной записи (1.0)?