Здесь (ИМХО) новые функции скаффолдинга поощряют неверный код.
Вы должны определить отдельные ViewModel для ваших представлений.Они содержат только те поля, которые вы хотите, чтобы пользователь изменил, вместе с какими-либо проверками / правилами для конкретного представления.
В рамках действия вашего контроллера вы можете проверить, является ли введенный пользователем ввод действительным (ModelState.IsValid
), и если да, выполнитенекоторое левостороннее сопоставление между вашими свойствами ViewModel и свойствами вашей сущности.
Подробнее см. Рекомендации по ViewModel .
Однако, чтобы ответить на ваш вопрос, вы можетеиспользуйте атрибут HiddenInput
в поле Id, чтобы он отображался как <input type="hidden"..
.
Что касается установки идентификатора, создайте базовый класс для ваших сущностей, например:
public abstract class BaseEntity {
public Guid Id {get;set;}
public BaseEntity() {
Id = Guid.NewGuid();
}
}
Затем вы можете наследовать свои сущности от этого класса, а когда вы вызываете new MyEntity()
базовый классбудет вызван конструктор, таким образом, установив Id.