Книги онлайн и без регистрации » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 398 399 400 401 402 403 404 405 406 407
Перейти на страницу:
class="p1">[HttpGet("{id?}")]

public async Task<IActionResult> Delete(int? id)

{

  var car = await GetOneCarAsync(id);

  if (car == null)

  {

    return NotFound();

  }

  return View(car);

}

[HttpPost("{id}")]

[ValidateAntiForgeryToken]

public async Task<IActionResult> Delete(int id, Car car)

{

  await _serviceWrapper.DeleteCarAsync(id,car);

  return RedirectToAction(nameof(Index));

}

Обновление компонента представления

В текущий момент внутри компонента представления MenuViewComponent применяется уровень доступа к данным и синхронная версия Invoke(). Внесите в класс следующие изменения:

using System.Linq;

using System.Threading.Tasks;

using AutoLot.Dal.Repos.Interfaces;

using AutoLot.Services.ApiWrapper;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.ViewComponents;

namespace AutoLot.Mvc.ViewComponents

{

  public class MenuViewComponent : ViewComponent

  {

    private readonly IApiServiceWrapper _serviceWrapper;

    public MenuViewComponent(IApiServiceWrapper serviceWrapper)

    {

      _serviceWrapper = serviceWrapper;

    }

    public async Task<IViewComponentResult> InvokeAsync()

    {

      var makes = await _serviceWrapper.GetMakesAsync();

      if (makes == null)

      {

        return new ContentViewComponentResult("Unable to get the makes");

      }

      return View("MenuView", makes);

    }

  }

}

Совместный запуск приложений AutoLot.Mvc и AutoLot.Api

Приложение AutoLot.Mvc рассчитывает на то, что приложение AutoLot.Api должно быть запущено. Это можно сделать с помощью Visual Studio, командной строки или через комбинацию того и другого.

На заметку! Вспомните, что приложения AutoLot.Mvc и AutoLot.Api сконфигурированы на воссоздание базы данных при каждом их запуске. Обязательно отключите воссоздание хотя бы в одном из приложений, иначе возникнет конфликт. Чтобы ускорить отладку, отключите воссоздание в обоих приложений при тестировании функциональности, которая не изменяет данные.

Использование Visual Studio

Вы можете сконфигурировать среду Visual Studio на запуск нескольких проектов одновременно. Щелкните правой кнопкой мыши на имени решения в окне Solution Explorer, выберите в контекстном меню пункт Select Startup Projects (Выбрать стартовые проекты) и установите действия для проектов AutoLot.Api и AutoLot.Mvc в Start (Запуск), как показано на рис. 31.11.

После нажатия клавиши <F5> (или щелчка на кнопке запуска с зеленой стрелкой) оба проекта запустятся. При этом возникает ряд сложностей. Первая сложность — среда Visual Studio запоминает последний профиль, который применялся для запуска приложения. Это значит, что если вы использовали для запуска AutoLot.Api веб-сервер IIS Express, то запуск обоих приложений приведет к запуску AutoLot.Api с применением IIS Express, поэтому порт в настройках служб окажется некорректным.

Проблему легко устранить. Либо измените порты в файле appsettings.development.json, либо запустите приложение под управлением Kestrel, прежде чем конфигурировать совместный запуск приложений.

Вторая сложность связана с синхронизацией. Оба проекта стартуют практически одновременно. Если вы сконфигурировали приложение AutoLot.Api на воссоздание базы данных при каждом его запуске, тогда она не будет готова для приложения AutoLot.Mvc, когда компонент представления запускается с целью построения меню. Проблему решит быстрое обновление браузера, отображающего AutoLot.Mvc (как только вы увидите пользовательский интерфейс Swagger в AutoLot.Api).

Использование командной строки

Откройте окно командной строки в каждом каталоге проекта и введите команду dotnet watch run. Это позволит управлять порядком и синхронизацией, а также гарантирует, что приложения выполняются с применением Kestrel, но не IIS. Информацию об отладке при запуске из командной строки ищите в главе 29.

Резюме

В настоящей главе вы завершили изучение ASP.NET Core, равно как и построение приложения AutoLot.Mvc. Процесс изучения начинался с исследования представлений, частичных представлений, а также шаблонов редактирования и отображения. Затем вы узнали о вспомогательных функциях дескрипторов, смешивающих разметку клиентской стороны с кодом серверной стороны.

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

Затем с использованием HTTPClientFactory и конфигурационной системы ASP.NET Core была создана оболочка службы, взаимодействующая с AutoLot.Api, которая применялась для создания компонента представления, отвечающего за построение динамической системы меню. После краткого обсуждения способов одновременной загрузки обоих приложений (AutoLot.Api и AutoLot.Mvc) была разработана основная часть приложения.

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

Примечания

1

https://ru.wikipedia.org/wiki/Дoлгocpoчнaя_пoддepжкa_пpoгpaммнoгo_oбecпeчeния

1 ... 398 399 400 401 402 403 404 405 406 407
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. В коментария нецензурная лексика и оскорбления ЗАПРЕЩЕНЫ! Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?