Как реализовать контроллер ядра ASP. NET с поддержкой Razor и Angular? - PullRequest
2 голосов
/ 13 февраля 2020

В настоящее время я пишу веб-приложение в C# ASP. NET Core и Razor Pages.

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

Проблема в том, что мои методы контроллера должны возвращать объект ViewResult для правильной визуализации представления при использовании Razor Pages. Результат, очевидно, нельзя использовать в Angular, и методы контроллера не являются действительно RESTful, как я хочу, чтобы они были.

Так есть ли способ реализовать контроллер, поддерживающий Razor и Angular?

Заранее спасибо

1 Ответ

1 голос
/ 13 февраля 2020

Если вы идете по пути angular, не совсем. Angular ожидает связи с использованием Xhr-запросов.

В net ядре даже есть шаблон для angular приложений: https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular?view=aspnetcore-3.1&tabs=visual-studio

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

Т.е.:

[HttpGet]
public ActionResult Index()
{
     IndexViewModel viewModel = GetIndexModel();
     // Add action logic here
     return View(viewModel);
}

[HttpGet]
public IndexViewModel GetIndexModel() {
   // return the view model.
}

Вторая функция get может использоваться как запрос xhr из вашего приложения angular. Это не очень рекомендуется. Переход на angular - это хорошая возможность превратить ваш API в Rest и правильно обработать данные в вашем спа.

...