эй, это совсем не сложно, и это неплохая идея. все зависит от потребностей вашего проекта. Многие программные продукты (не проекты, а продукты) зависят от этой модели, поэтому им не нужно переписывать свою логику кода / пользовательского интерфейса для различных нужд клиента. клиенты могут настроить свой пользовательский интерфейс так, как они хотят, используя дизайнерскую форму в системе администратора
Я использовал XML для сохранения метаданных для такого рода вещей. некоторые атрибуты, которые я сохранил для каждого поля, были:
- friendlyname (подпись к надписи)
- имеет предопределенные значения (да для отбрасывания
вниз список / список нескольких флажков)
- множественный выбор (если да, то установите флажок
список, если нет, то выпадающий список)
- тип данных
- MaxLength
- обязательны для заполнения
- MinValue
- MAXVALUE
- RegularExpression
- включено (показывать или не показывать)
- sortkey (заказ в веб-форме)
относительно позиционирования - мне было все равно, я просто сгенерировал табличные теги td 1 под другим - однако, если вы хотите реализовать это, вы можете иметь еще 1 атрибут CssClass, где вы можете определить определенные свойства пользовательского интерфейса (смотрите и чувствовать, позиционирование и т.д.) здесь
ОБНОВЛЕНИЕ: также обратите внимание, что многие продукты электронной коммерции следуют этому динамическому интерфейсу, когда вы хотите ввести информацию о продукте - поскольку их клиенты могут продавать все под солнцем, от мебели до секс-игрушек ;-), так что вместо переписывания кода для каждой отрасли они просто позволяют своим клиентам вводить метаданные для атрибутов продукта через форму администратора: -)
Я бы также порекомендовал вам взглянуть на Модель Entity-attribute-value - у нее есть свои плюсы и минусы, но я чувствую, что ее вполне можно использовать с вашими требованиями.