Как вы сказали, все лампы одинаковы, за исключением нескольких дополнительных свойств.Представьте, что свойства являются расширениями базового класса.Базовый класс допускает существование расширений (через LampSpecialProperties), но не заботится об их содержимом.Затем вы можете определить модели, подобные этой
public class LampViewModel
{
public string SomeProperty {get;set}
public LampSpecialProperties SpecialProperties {get;set;}
}
public abstract class LampSpecialProperties
{ }
public class SomeConcreteLampSpecialProperties : LampSpecialProperties
{
public string BrightnessLevel {get;set;}
}
. В вашем представлении отобразите свойства базовой модели лампы, а затем свойства расширения
@model LampViewModel
... some shared properties
@Html.DisplayFor(model => model.SpecialProperties)
. В Views / DisplayTemplates вы можете иметь шаблоны для каждогоконкретная реализация этих LampSpecialProperties
@model SomeConcreteLampSpecialProperties
@Html.DisplayFor(model => model.BrightnessLevel)
Для другой лампы
@model SomeAnotherConcreteLampSpecialProperties
@Html.DisplayFor(model => model.FuelConsumption)// sounds scarry :)
И так далее для всех расширений лампы.
Но это все о вашей сфере деятельности и бизнеселогика.Если ваш бизнес требует 30-40 классов моделей, вы должны создать их один за другим