我已使用两者
为模型中的布尔值设置默认值 [DefaultValue(true)]
和
public bool IsActive { get; set; } = true;
并且我已经添加了
modelBuilder.Entity<modelName>().Property(p => p.IsActive).HasDefaultValue(true);
一切正常,我的数据库表具有正确的&#34;默认值或绑定&#34;。在我的“创建”视图中,我希望使用默认属性,但无法查看如何在视图中使用模型的默认属性。使用
<input asp-for="IsActive" class="form-control" checked="checked"/>
有效,但我自己硬编码checked="checked"
值。如何在视图中阅读模型的默认值?
针对请求的代码进行了编辑,模型为
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace securitytrials.Models {
public class CaseType {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TheID { get; set; }
[Display(Name = "Active")]
public bool IsActive { get; set; } = true;
}
}
动作方法是模板生成的默认方法。
public IActionResult Create() {
return View();
}
没有包含它们,因为除了默认值之外没有那么多。
DbContext.OnModelCreating
只是
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<CaseType>().Property(p => p.IsActive).HasDefaultValue(true);
}
答案 0 :(得分:0)
DefaultValue
实际上并没有做任何事情。在某些情况下,代码生成器可以使用它,但主要是在Web应用程序的上下文中,它完全没有意义。作为docs详细信息:
DefaultValueAttribute不会导致使用属性的值自动初始化成员。您必须在代码中设置初始值。
HasDefaultValue
只为列设置DEFAULT
,因此您可能也需要它,如果您希望实际的表架构反映默认值,但唯一真正有助于您的代码的是:
public bool IsActive { get; set; } = true;
你所要求的并不完全清楚。因为在显示该默认值的输入中单独应该没有问题。换句话说,以下代码:
<input asp-for="IsActive" class="form-control" />
将生成:
<input type="textbox" class="form-control" checked="checked" />
如果不是,那么您的模型存在一些问题。要么您对已添加默认值的类感到困惑,要么代码中的其他内容在更改该值之前会更改该视图。但是,如果没有更多的代码可以使用,就像你的行动方法一样,这是不可能的。