use*_*812 39 asp.net-mvc asp.net-mvc-3
我有这个字段,由于某种原因,当我点击提交时,获得一个验证消息,该字段是必需的.
[DisplayName("Total Budget:")]
public double Budget { get; set; }
@Html.EditorFor(model => model.account.Budget)
@Html.ValidationMessageFor(model => model.account.Budget)
public class Account
{
[DisplayName("Total Budget:")]
public double Budget { get; set; } //dropdown
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*ose 98
MVC中的内置DefaultModelBinder将对值类型(如int,DateTime,decimal等)执行必需和数据类型验证.即使您没有使用某些类似的显式指定验证,也会发生这种情况[Required].
为了使其成为可选项,您必须将其定义为可为空:
public double? Budget { get; set; }
Run Code Online (Sandbox Code Playgroud)
double是一种值类型.值类型始终包含值,即使您未设置值也是如此.该值是其类型的默认值(在本例中0.0).根据框架的要求处理所有值类型.解决这个问题的唯一方法是创建一个自定义模型绑定器,但这不会阻止模型包含默认值(因为没有办法说它没有输入).
因此,即使您创建自定义活页夹,在处理模型时,您也无法判断是否有人输入0或者这是否只是默认值.
因此,唯一真正的解决方案是将视图模型更改为使用可空类型,例如Nullable<double>(简写double?).
小智 6
您必须在application_start(global.asax)中添加以下行
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
Run Code Online (Sandbox Code Playgroud)
来源:不需要的属性不断获取data-val-required属性
| 归档时间: |
|
| 查看次数: |
28417 次 |
| 最近记录: |