首页 > 代码库 > MVC模型验证:属性值无require,页面仍然验证问题

MVC模型验证:属性值无require,页面仍然验证问题

为了更清晰的说明这个问题,我使用了VS2013自动生成的MVC示例来演示,运行示例项目,点击注册页面,如图:

 

接下来给上面的注册增加一个“年龄条件”,找到RegisterModel,添加一个”Age”属性,但是,不加”[require]”,如图:

 

运行项目,回到注册页面,用户名,密码,确认密码都填,年龄项不填,点击注册,如图:

 

我们发现它提示 “年龄字段是必须的”,但是我并没有在 Age属性上加require属性,它怎么还会验证呢? 起初我还以为页面缓存原因,清空缓存,问题仍然存在。

于是Google,了解到这是MVC自动为我们处理的,对于值类型如:decimal,DateTime,int等,不管我们有没有加[require]属性,页面都会验证。解决方法是把该属性设成nullable类型,如上面Age属性修改为:

public int? Age { get; set; }