Совместное использование асинхронных методов между контроллерами MVC

Я немного опаздываю к игре MVC, и, честно говоря, там так много информации, что почти невозможно использовать "правильные" ключевые слова, чтобы даже приблизиться к ответу.

У меня есть функция, которая получает codes из базы данных и отображает их в списке автозаполнения. Я хочу поделиться этим GetCodes Метод между контроллерами и этими codes используются на других формах.

Что лучше MVC практиковаться для этого?

Лучше ли создать базовый класс с этой функцией, или лучше создать контроллер Web API для совместного использования методов такого типа?

[Изменить] Чтобы уточнить, codes Я предоставляю автозаполнение, как список городов в большом штате или провинции. Это статический список, который обновляется правительством только тогда, когда изменения происходят на федеральном уровне.

Я просто не хочу вырезать / вставить функцию, которая выполняет поиск, я бы предпочел написать что-то, что можно использовать повторно. Прямо сейчас, функция GetCodes живет на одном контроллере, и я вызываю этот метод действия контроллера из других частей сайта. Мне это не нравится, и я ищу несколько советов о том, как использовать другие части ASP.NET, чтобы сделать это лучше и надежнее.

Спасибо

2 ответа

Использовать модели представления - создайте модель представления (или базовый класс модели представления), которая либо загружает codes или предоставляет метод для загрузки codes, затем используйте эту модель представления как свойство более крупных моделей представления (или унаследуйте от модели представления).

Каждый раз, когда вы говорите "что является лучшим способом...", ответ всегда звучит так: "Это зависит от множества факторов".

Мы действительно мало знаем о вашем дизайне, требованиях, реализации или других деталях. Тем не менее, есть некоторые вещи, которые нужно иметь в виду.

Нет смысла создавать контроллер WebApi, если вам не нужна распределенная архитектура любого рода.

Похоже, ваши данные просто являются частью вашей модели, поэтому вы можете использовать любой из стандартных шаблонов для доступа к данным модели. Любое руководство, например, музыкальный магазин MVC или Nerd Dinner, покажет вам, как это сделать.

Тот факт, что данные распределяются между контроллерами, не делает их особенными. Суть модели в том, что данные могут использоваться любым контроллером.

Другие вопросы по тегам