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());