You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Core:如何将实体属性排除在视图外但保留在数据库表中

解决方案

方法1:使用[Display(AutoGenerateField = false)]特性

该特性会告知视图引擎在自动生成表单字段时跳过此属性,同时Entity Framework仍会在数据库中创建对应的列。修改实体类如下:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [Display(AutoGenerateField = false)]
    public DateTime DateCreated { get; set; }
}

方法2:使用[HiddenInput(DisplayValue = false)]特性

这个特性会把属性渲染为隐藏输入字段,不会显示日期选择器,数据库列也能正常生成。适合需要在表单提交时保留字段值的场景,创建时你只需在后台赋值即可:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [HiddenInput(DisplayValue = false)]
    public DateTime DateCreated { get; set; }
}

方法3:手动修改创建视图

如果是自动生成的视图,直接删除视图中关于DateCreated的输入控件代码就行。比如删掉类似下面的代码块:

<div class="form-group">
    @Html.LabelFor(model => model.DateCreated, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.DateCreated, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.DateCreated, "", new { @class = "text-danger" })
    </div>
</div>

方法4:使用[ScaffoldColumn(false)]特性(适用于旧版ASP.NET MVC)

作用和Display(AutoGenerateField = false)类似,自动生成视图时会跳过该字段,不影响数据库列的创建:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [ScaffoldColumn(false)]
    public DateTime DateCreated { get; set; }
}

额外注意事项

在创建实体的后台代码(比如Controller的Create方法)中,记得为DateCreated赋值,同时如果用了Bind特性,不要把DateCreated加入Include列表,避免前端传入值覆盖你设置的日期:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,FirstName,LastName")] Person person)
{
    if (ModelState.IsValid)
    {
        person.DateCreated = DateTime.Now; // 推荐用DateTime.UtcNow
        db.People.Add(person);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(person);
}

内容的提问来源于stack exchange,提问作者pnizzle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:18:43