Как автоматически установить свойство maxlengh для текстового поля из EF? - PullRequest
0 голосов
/ 15 мая 2019

Я использую обычный помощник EditFor для привязки данных к элементам управления html.

Для полноты, вот пример:

@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @maxlength= 100, @class = "form-control" } })

Чтобы установить maxlength для строковых полей, янеобходимо явно установить атрибут в каждом представлении, которое использует одно и то же поле таблицы, и в модели данных имеется много представлений и значений строк.

Выполнение этого на каждой странице подвержено ошибкам.Изменение размера приведет к поломке приложения, если место будет забыто.

Как передать длину непосредственно из модели EF?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Самый простой вариант - добавить атрибут [MaxLength(50)] к свойству модели.Например:

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

Вы можете опустить свойство maxlength в вызове @Html.EditorFor(), и оно будет взято из метаданных модели.

0 голосов
/ 15 мая 2019

Вы можете использовать Fluent API для настройки максимальной длины свойства. В этом примере при настройке на SQL Server будет использоваться тип данных nvarchar (500).

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

Или Вы можете использовать аннотации данных для настройки максимальной длины свойства.

public class Test
    {
        [MaxLength(500)]
        public string Description{ get; set; }
    }
...