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

时间:2014-05-23 07:11:22

标签: c# .net asp.net-mvc

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

类似

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

5 个答案:

答案 0 :(得分:51)

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

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;
}

答案 1 :(得分:6)

使用[DefaultValue(false)]

Reference

答案 2 :(得分:3)

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

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

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

更改为:

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

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

答案 3 :(得分:0)

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

public class MyModel
{
    public MyModel()
    {
        MyId = 1;
    }

    public int MyId {get; set;}
}

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

答案 4 :(得分:-1)

using System.ComponentModel;

namespace EMS.Models
{
    public class Admission
    {
        [DefaultValue(false)]
        public Boolean LCStatus { get; set; }

        [DefaultValue("India")]
        public string Country{ get; set; }
    }
}