使用数据注释的mvc模型中的默认值

是否可以使用数据注释为int属性添加默认值

就像是

[DefaultValue=1] public int MyId {get; set;} 

试试这个 – 在构造函数中设置默认值:

 public class YOURMODEL { public int MyId { get; set; } public YOURMODEL() { MyId = 1; } } 

稍后由其他用户添加:自C#6.0(2015)以来,允许使用这种更简单的语法:

 public class YOURMODEL { public int MyId { get; set; } = 1; } 

构造函数方法当然是正确的(根据@Nilesh),但是此解决方案不会解决您可能已在数据库中创建的任何遗留数据。

您还可以通过生成迁移然后调整AddColumn方法来更新旧数据…

 AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false)); 

更改为:

 AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false, defaultValue: 1)); 

注意,这也将创建一个数据库触发器,它将自动更新INSERT上的默认值,因此从技术上讲,您不需要从数据库角度来看构造函数方法,但使用构造函数设置值仍然是最佳实践。

使用[DefaultValue(false)]

( 参考 )

您只能使用类的构造函数执行此操作。 因此,您的代码应如下所示:

 public class MyModel { public MyModel() { MyId = 1; } public int MyId {get; set;} } 

这将导致在MyId类的新实例时将MyId属性设置为1 。 但是,如果模型绑定检测到用户已为MyId指定了值,则它将使用用户指定的值覆盖默认值。