ViewData.ModelState.IsValid是假的,因为Mvc无法解析用逗号分隔成百上千的值
本文关键字:成百上千 分隔 IsValid ModelState Mvc 因为 ViewData | 更新日期: 2023-09-27 18:29:50
我有类型为 int?
的字段。
在视图上,我使用jquery插件,它将textBox值与逗号分开,如下所示:3,463,436
= 3463436
- 它必须是int
值。
但是在表单 subbmit 上,我收到错误"值'3,463,436'对最大连续无效。
有什么建议吗?谢谢。
比去掉逗号更好的解决方案是使用 .NET内置的数字样式解析。
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());
在 MVC ASP.NET 中,一个选项是实现一个自定义ModelBinder
,从提交的值中删除逗号。 即实现DefaultModelBinder
的子类
以下是对decimal
数据类型的小数分隔符执行此操作的方法:
如何在 ASP.NET MVC控制器中设置小数分隔符?
对于int
数据类型的千位分隔符,您将必须使用类似的东西。