Entity framework 如何从EF自动设置textbox的maxlengh属性?

Entity framework 如何从EF自动设置textbox的maxlengh属性?,entity-framework,model-view-controller,asp.net-mvc-views,Entity Framework,Model View Controller,Asp.net Mvc Views,我正在使用普通助手EditFor将数据绑定到html控件 为了完整起见,这里举一个例子: @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @maxlength= 100, @class = "form-control" } }) 要为字符串字段设置maxlength,我需要在每个使用相同表字段的视图中显式设置属性,并且数据模型中有许多视图和字符串值 在每个页面中执行此操作都很容易出错。如果忘

我正在使用普通助手EditFor将数据绑定到html控件

为了完整起见,这里举一个例子:

@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @maxlength= 100, @class = "form-control" } })
要为字符串字段设置maxlength,我需要在每个使用相同表字段的视图中显式设置属性,并且数据模型中有许多视图和字符串值

在每个页面中执行此操作都很容易出错。如果忘记某个地方,更改大小将中断应用程序


如何直接从EF模型传递长度?

最简单的选择是将属性添加到模型属性。例如:

public class SomeModel
{
    [MaxLength(50)]
    public string SomeProperty { get; set; }
}

然后,您可以在对@Html.EditorFor的调用中省略maxlength属性,该属性将取自模型元数据。

您可以使用Fluent API为属性配置最大长度。在本例中,以SQL Server为目标将导致使用nvarchar500数据类型

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Test>()
                .Property(b => b.Description)
                .HasMaxLength(500);
        }

将属性添加到模型属性。更改EF生成的代码?您不应该在视图中使用EF模型。您认为第一块代码在这种情况下有何帮助?
public class Test
    {
        [MaxLength(500)]
        public string Description{ get; set; }
    }