我已经成功安装并运行了.Net Core 2.1随附的React + Redux入门模板(我说的是使用dotnet new reactredux
创建的项目)。
现在,我想将进入点从index.html
更改为Asp.Net.Core项目中的我自己的控制器。
由于将create-react-app
配置为使用index.html
作为入口点,我不得不:
index.html
文件npm run eject
)以便修改webpack的配置文件(我从webpack config中删除了InterpolateHtmlPlugin
和HtmlWebpackPlugin
插件,以及所有对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
。