Где разместить код главной страницы в приложении MVC?

Я использую несколько (2 или 3) главных страниц в своем приложении ASP.NET MVC, и каждая из них должна отображать биты информации из базы данных. Например, список спонсоров, текущий статус финансирования и т. Д.

Таким образом, мой вопрос был, где я должен поместить этот код вызова базы данных главной страницы?

Обычно они должны входить в свой собственный класс контроллера, верно? Но тогда это означало бы, что мне придется подключать их вручную (например, передавая ViewDatas), поскольку это выходит за рамки обычной инфраструктуры маршрутизации, предоставляемой инфраструктурой MVC.

Есть ли способ сделать это чисто, не подключая ViewData к передаче / вызовам Action к главным страницам вручную или подклассам фреймворков?

Количество документации очень мало... и я очень новичок во всем этом, включая концепции самого MVC, поэтому, пожалуйста, поделитесь своими советами / методами по этому вопросу.

3 ответа

Решение

Один из способов сделать это состоит в том, чтобы поместить в представление главной страницы хук для ViewData, а затем вы определяете BaseController: Controller (или несколько базовых классов), где вы выполняете все необходимые вызовы БД.

То, что вы хотите сделать, это то же самое, что описано в этой статье.

Надеюсь, это поможет!

С уважением

Отличный вопрос У вас есть несколько вариантов, доступных для вас.

  1. Создайте на своей главной странице вызов jQuery, который получит необходимые данные с контроллера, а затем снова заполните поля, используя jQuery.
  2. Второй вариант заключается в создании пользовательских элементов управления, которые выполняют собственные вызовы контроллера, чтобы заполнить их информацию.

Я думаю, что лучший выбор - это создание элементов управления для области вашей главной страницы, в которой есть данные, которые необходимо заполнить. Таким образом, оставляя вашу мастер-страницу строго содержать элементы дизайна. Удачи.

Если вы не возражаете против строго типизированных данных представления, вы можете поместить все данные главной страницы в общий базовый класс для viewData. Вы можете установить эти данные в конструкторе базового класса. Все ваши представления, требующие дополнительных данных, будут нуждаться в строго типизированных представлениях, которые наследуются от этого базового класса.

Чтобы разрешить вызов View() в ваших контроллерах без явных данных представления, вы можете переопределить View в ControllerBase:

protected override ViewResult View(string viewName, string masterName, object model)
{
    if (model == null)
    {
        model = new ViewDataBase();
    }
    return base.View(viewName, masterName, model);
}
Другие вопросы по тегам