簡體   English   中英

使用數據注釋的 mvc 模型中的默認值

[英]Default value in mvc model using data annotation

是否可以使用數據注釋為 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;
}

使用[DefaultValue(false)]

參考

構造函數方法當然是正確的(根據@Nilesh),但此解決方案並未解決您可能已在數據庫中創建的任何遺留數據。

您還可以通過生成遷移然后調整 AddColumn 方法來更新舊數據...

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

更改為:

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

請注意,這還將創建一個數據庫觸發器,該觸發器將自動更新 INSERT 上的默認值,因此從數據庫的角度來看,您在技術上不需要構造函數方法,但使用構造函數設置值仍然是最佳實踐。

您只能使用類的構造函數來執行此操作。 因此,您的代碼應如下所示:

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

    public int MyId {get; set;}
}

每當創建類的新實例時,這將導致MyId屬性設置為1 但是,如果模型綁定檢測到用戶為MyId指定了一個值,它將用用戶指定的值覆蓋默認值。

using System.ComponentModel;

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM