我有一个非英语配置(西班牙语)中运行的ASPNET核心应用: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;
}
如果我使用邮递员,发送到行动JSON像这样{VAL:15.30},然后VAL在行动收到
0(绑定不是因为工作文化)。如果我发送像这样的json {val:15,30},那么在我收回的操作中15.30 我遇到的问题是,我需要使用逗号接受小数的操作,因为这是来自输入的格式输入文本该应用的形式。但是我还需要接受来自json格式请求的小数点。没有办法在接受逗号的json中指定一个十进制/浮点数(将其作为字符串发送不是选项)。我怎样才能做到这一点???这让我疯狂。
谢谢!
您将需要创建一个自定义模型绑定器,读取'contentType'和解析取决于内容类型 –
的价值MVC5我使用了一个自定义模型绑定器,它解决了我的问题,对于mvc核心,您可能会在这里找到类似的解决方案[ASP.Net Core 1.0(RTM)中的自定义模型绑定](http://intellitect.com/custom-model-binding -in-asp-net-core-1-0 /) – Ziyad