将Asp.Net Core的React + Redux入门模板中的入口点更改为控制器

时间:2018-10-11 12:11:41

标签: reactjs asp.net-core .net-core create-react-app

我已经成功安装并运行了.Net Core 2.1随附的React + Redux入门模板(我说的是使用dotnet new reactredux创建的项目)。

现在,我想将进入点从index.html更改为Asp.Net.Core项目中的我自己的控制器。

由于将create-react-app配置为使用index.html作为入口点,我不得不:

  1. 删除index.html文件
  2. “弹出”依赖项(npm run eject)以便修改webpack的配置文件(我从webpack config中删除了InterpolateHtmlPluginHtmlWebpackPlugin插件,以及所有对index.htmlbuild.js中的start.js
  3. 向项目添加HomeController.cs

namespace ReactReduxSpa.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}

  1. 向我的项目中添加与以前的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>

  1. 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" });
});

现在,访问站点时将执行我的家庭控制器,并且站点本身可以​​按预期工作。但是,对于这些请求,我在控制台中遇到了成千上万个错误:

Requests to sockjs-node Errors in the console

看着响应,我发现服务器只是提供了Index.cshtml视图的内容,而不是让这些请求通过。我假设这些用于开发来同步站点和源。

总结一下:我不认为我做的正确,但是我不知道该如何做。我的目标只是用一些动态内容(需要在服务器端生成一些位)替换静态index.htm

0 个答案:

没有答案
相关问题