【发布时间】:2017-02-05 20:23:24
【问题描述】:
我有一个使用非英语配置(西班牙语)运行的 aspnet 核心应用程序:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
......
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(new CultureInfo("es-AR"))
,SupportedCultures = new List<CultureInfo>
{
new CultureInfo("es-AR")
}
,SupportedUICultures = new List<CultureInfo>
{
new CultureInfo("es")
}
});
.........
}
在英语中,十进制数的小数部分用点分隔,但在西班牙语中使用逗号:
- 10256.35 英文
- 10256,35 西班牙语
我在控制器中有这个动作:
[HttpPost]
public decimal Test(decimal val)
{
return val;
}
如果我使用邮递员并向该操作发送一个像 {val: 15.30} 这样的 json,那么操作中的 val 将接收到 0(由于文化,绑定不起作用)。如果我发送这样的 json {val: 15,30} 然后在操作中我收到 15.30 我遇到的问题是,我需要接受带逗号的小数的操作,因为这是来自应用程序表单中输入类型文本的格式。但我还需要接受带有来自 json 格式请求的点的小数。无法在接受逗号的 json 中指定小数/浮点数(不能将其作为字符串发送)。我怎样才能做到这一点???我快把自己逼疯了。
谢谢!!
【问题讨论】:
-
您需要创建一个自定义 ModelBinder 来读取
contentType并根据内容类型解析值 -
在 MVC5 中我使用了自定义模型绑定器,它解决了我的问题,对于 mvc 核心,您可以在这里找到类似的解决方案 Custom Model Binding in ASP.Net Core 1.0 (RTM)
标签: c# json asp.net-mvc localization asp.net-core