加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 接受逗号和点作为小数分隔符

发布时间:2020-12-16 00:35:44 所属栏目:asp.Net 来源:网络整理
导读:ASP.NET MVC中的模型绑定是非常好的,但它遵循区域设置。在我的区域设置中,小数点分隔符是逗号(‘,’),但用户也使用dot(‘。’),因为它们懒惰地切换布局。我想要在一个地方实现我的模型中的所有十进制字段。 我应该为小数类型实现自己的价值提供者(或事
ASP.NET MVC中的模型绑定是非常好的,但它遵循区域设置。在我的区域设置中,小数点分隔符是逗号(‘,’),但用户也使用dot(‘。’),因为它们懒惰地切换布局。我想要在一个地方实现我的模型中的所有十进制字段。

我应该为小数类型实现自己的价值提供者(或事件模型绑定)吗?我错过了一些简单的方法呢?

解决方法

最简单的方法是实现自己的模型绑定
public class DecimalModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
    {
        var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

        return valueProviderResult == null ? base.BindModel(controllerContext,bindingContext) : Convert.ToDecimal(valueProviderResult.AttemptedValue);
        // of course replace with your custom conversion logic
    }    
}

并在Application_Start()中注册:

ModelBinders.Binders.Add(typeof(decimal),new DecimalModelBinder());
ModelBinders.Binders.Add(typeof(decimal?),new DecimalModelBinder());

学分:Default ASP.NET MVC 3 model binder doesnt bind decimal propeties

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读