我有班级员工
public class Employee { public string LastName { get; set; } public decimal Salary { get; set; } }
在EmployeesController中,方法
[HttpPostAttribute] public ActionResult Create(Employee employee) { }
如果用户在Employee表单的Salary字段中输入“1,2,3”,则ModelState将变为无效。
我没有找到关于此的官方文档。任何人都可以对此有所了解吗?
答案 0 :(得分:0)
enter link description here这就是DecimalModelBinder的工作方式(参见第二个回复,基本上是Decimal Model Binder对于1,2和/或3 ......返回false)。它只将1,2和3视为整数。
尝试传入1.00并且它会接受它。
这就是ModelBinders和here的神奇之处。 Here's a nice overview.
以下是how to extend it的示例。
Another overview with some tips for taking advantage of the model binding.
您还可以下载源代码,以了解它正在做什么。 codeplex site有一些很好的信息也可以帮到你。
编辑 - 在评论中回答您的问题......
您可以使用Data Annotations更改错误消息。还可以查看this。如果您不喜欢默认/内置工作方式,也可以创建自己的数据注释。您还可以localize your validation messages。
这是另一个nice overview,它介绍了一些可用于验证的技术。您可以直接向模型添加验证以及使用注释。您可能正在使用IDataErrorInfo接口,IValidatableObject接口和/或Remote Validation进行验证。