Entity framework 如何从EF自动设置textbox的maxlengh属性?
我正在使用普通助手EditFor将数据绑定到html控件 为了完整起见,这里举一个例子: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,我需要在每个使用相同表字段的视图中显式设置属性,并且数据模型中有许多视图和字符串值 在每个页面中执行此操作都很容易出错。如果忘
@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; }
}