[asp.net-mvc]数字输入十进制逗号替换点

发布时间: 2016/10/6 2:23:58
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

后过帐窗体输入的类型 '数量' 和值"1,5,"浏览器 (Chrome 43.0.2357.130,FF 38.0.5) 是发送用句点作为小数点分隔符,但输入数字的属性郎 ="cs"(在捷克共和国我们使用十进制的逗号),所以对于 ASP.NET MVC,格式不正确。

如何可以设置浏览器 (窗体/输入) 来发送什么用户真正充满 ("1,5"以我为例)?

从浏览器发送的表单数据︰

__RequestVerificationToken:KJG1yJxm-1EcUHPwgvr0gPpkyoEHHHcTfSu6hHvaKDA_XKHTzWfPfUJtAr11gNiR_euG_jWYmXlrMO7dyhSf7g4K74eOVTtEzLQ1OdrTLZ_cbIyyYj5vrgxlk81JzuhM0
PaymentMethodId:8
PaymentMethod:Direct payment
Provider:Direct payment
MinAmount:1,00000000
MaxAmount:5000,00000000
Amount:1.5

解决方法 1:

Oukey,它看起来像我找到解决方法,但是看看它作为例子如何您可以处理类似问题......

public class ApolloModelBinder : DefaultModelBinder
{
    protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
    {
        var request = controllerContext.HttpContext.Request;

        decimal i;
        var value = request.Form[propertyDescriptor.Name];
        if (propertyDescriptor.PropertyType == typeof(decimal) && decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out i))
        {
            propertyDescriptor.SetValue(bindingContext.Model, i);
            return;
        }

        base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
    }
}
官方微信
官方QQ群
31647020