Razor Pages, используя Html.EditorFor () для редактирования / создания - PullRequest
0 голосов
/ 25 мая 2018

Завершите Noob здесь - пытаясь изучить Dot Net Core 2 Razor Pages.Пытался выяснить, как сделать «грязное» редактирование на некоторых из моих моделей.Собирался попытаться использовать рефлексию, но это не сработало - или, очевидно, я не знал, что делал.

Скажем, моя модель данных определяется как:

public class Book
{
    public int Id { get; set; } = 0;
    [Required]
    [MaxLength(75)]
    [Display(Name = "Book Title")]
    public string Title { get; set; }
    [Required]
    [MaxLength(50)]
    public string Author { get; set; }
    [Required]
    [Range(0,99)]
    public decimal Price { get; set; }
    [Required]
    [Range(0, 5)]
    public int Rank { get; set; }
}

Я обнаружил, что если использовать:

@Html.EditorFor(model => model.Book)

... на моей странице .cshtml (редактировать или создавать), я могу получить базовый экран редактирования или создания, который учитывает проверку и другие атрибуты для всех полей вмодель.Большой!Я мог бы использовать это для базового редактирования данных администратора.

Проблема двоякая:

  1. На моей странице редактирования мне нужно, чтобы мое поле "Id" было доступно только для чтения
  2. На моей странице создания мне нужно, чтобы мое поле "Id" по умолчанию было равно 0 и было доступно только для чтения

Любая комбинация:

    //[ScaffoldColumn(false)]
    //[HiddenInput(DisplayValue =false)]
    //[HiddenInput]
    //[DefaultValue(0)]
    //[ReadOnly(true)]
    //[Editable(false)]

... похоже, что нетработа.

Есть ли способ выполнить два моих требования, перечисленных выше?

1 Ответ

0 голосов
/ 18 декабря 2018

Я сам столкнулся с этим не так давно.[HiddenInput(DisplayValue =false)] работает, но когда вы строите модель данных на странице (или в представлении), она все равно генерирует тот же синтаксис, что и другие входные данные.Однако во время выполнения вход отображается как скрытый.

...