Я успешно установил и запустил стартовый шаблон React + Redux, поставляемый с .Net Core 2.1 (я говорю о проекте, созданном с dotnet new reactredux
).
Теперь я хотел бы изменитьмоя точка входа с index.html
на мой собственный контроллер в проекте Asp.Net.Core.
Поскольку create-react-app
настроен на использование index.html
в качестве точки входа, мне пришлось:
- Удалите файл
index.html
- «Извлечь» зависимости (
npm run eject
), чтобы изменить файл конфигурации для веб-пакета (я удалил InterpolateHtmlPlugin
и HtmlWebpackPlugin
плагины из конфига webpack, а также все ссылки на index.html
в build.js
и start.js
- Добавьте
HomeController.cs
в проект:
namespace ReactReduxSpa.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
Добавьте соответствующий файл
Index.cshtml
в мой проект с почти таким же содержимым, что и прежний файл
index.html
, за исключением того, что я теперь вручную вставляю сгенерированный пакет скриптов:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<base href="~/" />
<link rel="manifest" href="~/manifest.json">
<link rel="shortcut icon" href="~/favicon.ico">
</head>
<body>
<div id="root"></div>
<script src="~/static/js/bundle.js" asp-append-version="true"></script>
</body>
</html>
В
Startup.cs
я изменил
app.UseMvc(…)
на:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
Мой домашний контроллер теперь выполняется при доступе к сайту, и сам сайт работает как задумано.Тем не менее, я получаю тысячи ошибок в консоли для этих запросов:
Просмотр ответаЯ вижу, что сервер просто обслуживал содержимое моего Index.cshtml
представления вместо того, чтобы пропустить эти запросы.Я предполагаю, что они используются для разработки для синхронизации сайта и источников.
Подводя итог: я не думаю, что я делаю это правильно, но я не знаю, как это сделатьэто по-другому.Моя цель - просто заменить статический index.htm
некоторым динамическим контентом (некоторые биты должны быть сгенерированы на стороне сервера).