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

Posted

技术标签:

【中文标题】使用数据注释的 mvc 模型中的默认值【英文标题】:Default value in mvc model using data annotation 【发布时间】:2014-07-12 10:50:33 【问题描述】:

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

类似

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

【问题讨论】:

不行……用构造函数就好了。 可能重复Annotating properties on a model with default values 【参考方案1】:

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

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;

【讨论】:

【参考方案2】:

使用[DefaultValue(false)]

(Reference)

【讨论】:

不,DefaultValueAttribute 是不够的。您还必须在构造函数中通过代码设置值。见docs.microsoft.com/en-us/troubleshoot/developer/dotnet/…【参考方案3】:

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

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

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

更改为:

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

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

【讨论】:

【参考方案4】:

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

public class MyModel

    public MyModel()
    
        MyId = 1;
    

    public int MyId get; set;

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

【讨论】:

【参考方案5】:
using System.ComponentModel;

namespace EMS.Models

    public class Admission
    
        [DefaultValue(false)]
        public Boolean LCStatus  get; set; 

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

【讨论】:

虽然这段代码可能会解决问题,但一个好的答案应该解释代码的什么以及它如何提供帮助。 您可以从此 [链接] (codeproject.com/Articles/66073/…) 了解有关 DefaultValue 属性 的更多信息

以上是关于使用数据注释的 mvc 模型中的默认值的主要内容,如果未能解决你的问题,请参考以下文章

MVC3:在“仅代码”中设置默认值

在 MVC3 中为模型设置默认值

MVC的model怎么设置默认值

Telerik Kendo MVC Grid 子模板从父模板获取默认值

MVC的model怎么设置默认值

Spring 4 mvc REST XML 和 JSON 响应