【问题标题】:Angular2 and ASP.NET MVCAngular2 和 ASP.NET MVC
【发布时间】:2017-05-24 03:22:17
【问题描述】:

我正在自学 Angular2(显然是未来的浪潮)并且我正在做实验。我在这里按照 Ibrahim Uludag 的教程进行操作:

http://www.ibrahimuludag.com/2016/01/angular2-and-visual-studio.html

而且效果很好。但我想更进一步,使用 MVC 项目而不是 Ibrahim 建议的 TypeScript 项目。我正在使用一个简单的结构(一个控制器,一个视图),并且我已将 Angular2 JavaScript 引用添加到我的视图中(以及标题、正文等)。我必须在文件名前加上斜杠,否则服务器会将它们解释为控制器/视图引用。这部分工作正常。

我遇到的问题是这个命令:

System.config ({
    packages: {
        app: {
            format: 'register',
            defaultExtension: 'js'
        }
    }
});
System.import ('app/boot')
    .then (null, console.error.bind(console));

我可以从调试器中看到它正在尝试查找 http://localhost/Default/app/boot - “默认”部分是我的控制器的名称(当我没有在直接 JavaScript 引用中包含斜杠时出现的相同问题)。我尝试在“app/boot”前加上斜杠(“/app/boot”),这种方法很有效:它会找到 boot.ts 但不会找到任何依赖项,再次将控制器名称添加到 URL .

有没有人有任何建议,或者至少,我可以在哪里找到有关 System.import 指令的信息的参考?

谢谢。

【问题讨论】:

  • System.import 调用告诉 SystemJS 导入主文件,在您的情况下是 boot.js?

标签: asp.net-mvc model-view-controller angular


【解决方案1】:

首先,我赞扬你潜入 angular2 的世界。

System.import 是 SystemJS 的一部分。 SystemJS 是 angular 2 使用的模块加载器,而新的花哨的 javascript 规范由浏览器最终确定和实现。

有关 System.import 的更多信息,请参阅: https://github.com/systemjs/systemjs

我相信您的问题在于 MVC 提供静态文件的方式,而不是 SystemJs 尝试加载模块的方式。

请看这篇文章: Using ASP.NET routing to serve static files

在您的 RouteConfig.cs 文件中:

routes.IgnoreRoute("app/{file}.js");

这应该告诉 MVC 忽略位于项目根目录的 app 文件夹中的 js 文件。 SystemJS 应该能够正确加载您的模块。

【讨论】:

  • 感谢您的回复。我会试一试,然后告诉你。
  • 哦,谢谢你的参考。我也去看看。
  • 不。那似乎没有做到。这些文件在 GitHub 上:github.com/widgetinc/Angular-2-MVC 如果有人有兴趣破解它。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 2016-09-06
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
相关资源
最近更新 更多