Динамическое изменение моделей и контроллеров после публикации сайта в ASP.NET Core MVC - PullRequest
0 голосов
/ 06 октября 2018

Я использую ASP.NET Core MVC 2. Мне нужно, чтобы оператор мог изменять некоторые элементы моделей или просматривать коды.Как я могу кодировать или разрабатывать для него.

Например: у меня есть модель «новостей», и я хочу, чтобы оператор (конечный пользователь веб-сайта, который не может кодировать или получить доступ к визуальной студии) мог добавить это«Новости» модели:

public string ImageUrl { get; set; }

, а также может изменить базу данных без кодирования.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Если вы хотите создать полностью расширяемую модель, вы можете использовать что-то под названием Entity-attribute-value model (EAV).

Ваша модель может иметь несколько общих атрибутов, таких как Название и Сводка.Тогда у вас может быть список пользовательских полей, первым из которых может быть ImageUrl.Вы можете создать свой собственный класс с именем CustomField или чем-то подобным, который будет иметь такие свойства, как FieldName и DataType.

public string Title { get; set; }
public string Summary { get; set; }
public List<CustomField> CustomFields { get; set; }

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

0 голосов
/ 06 октября 2018

Если вы хотите автоматически отражать изменения вашей модели в базе данных, вам понадобится среда ORM, такая как EF (Entity Framework).Вы можете проверить больше здесь .

Для того, чтобы ваш случай произошел, создайте свою собственную платформу конфигурации, которая может использовать несколько инструментов и механизмов, которые позволят вам сгенерировать код и затем скомпилировать его.,Например, T4 и т. Д.

В общем, это очень сложная задача, и даже большие опытные команды могут столкнуться с проблемами при создании чего-то подобного.

Я могуне размещать код, так как это может показаться только отчаянным подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...