C# ViewData.ModelState.IsValid为false,因为Mvc可以';t解析用逗号分隔成百上千的值

C# ViewData.ModelState.IsValid为false,因为Mvc可以';t解析用逗号分隔成百上千的值,c#,jquery,asp.net-mvc,viewdata,C#,Jquery,Asp.net Mvc,Viewdata,我有类型为int?的字段 在视图中,我使用jquery插件,该插件将文本框值与逗号分隔开来,逗号如下:3463436=3463436-它必须是intvalue 但是在表单subbmit上,我得到错误“值3463436对于最大连续值无效。” 有什么建议吗?谢谢。在ASP.NET MVC中,一个选项是实现自定义的ModelBinder,从提交的值中去掉逗号。即,实现DefaultModelBinder 以下是如何为decimal数据类型的十进制分隔符执行此操作: 对于int数据类型,必须使用类似的

我有类型为
int?
的字段

在视图中,我使用jquery插件,该插件将文本框值与逗号分隔开来,逗号如下:
3463436
=
3463436
-它必须是
int
value

但是在表单subbmit上,我得到错误“值3463436对于最大连续值无效。”


有什么建议吗?谢谢。

在ASP.NET MVC中,一个选项是实现自定义的
ModelBinder
,从提交的值中去掉逗号。即,实现
DefaultModelBinder

以下是如何为
decimal
数据类型的十进制分隔符执行此操作:


对于
int
数据类型,必须使用类似的千位分隔符。

比去掉逗号更好的解决方案是使用.NET内置的NumberStyles解析

public class MyBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        string key = bindingContext.ModelName;
        var v = ((string[])bindingContext.ValueProvider.GetValue(key).RawValue)[0];
        int outPut;
        if (int.TryParse(v, NumberStyles.AllowThousands, new CultureInfo("en-US"), out outPut))
           return outPut;
        return base.BindModel(controllerContext, bindingContext);
    }
}

ModelBinders.Binders.Add(typeof(int), new MyBinder());