我正在使用 ASP.Net Core MVC 和 ASP.Net Web Api 开发 Angular2 应用程序。
这是我的基本架构。
ASP.Net 核心 MVC 项目(MyProject.Web)
-
Nuget,npm和bower用于依赖。 Bower用于将 npm 依赖项从
node_modules
复制到wwwroot/libs/
-
Home/Index
controller 的动作提供第一页加载Angular2和其他依赖项。 -
模板从 ActionMethods i.e 加载。
Home/About
-
SystemJS加载模块。
-
Angular2 的 http 服务调用 ASP.Net Web Api 项目(一个单独的项目而不是 mvc)
ASP.Net Web Api 项目(MyProject.Api) - 每个控制器被指定用于实体的 CRUD 操作,并响应 Angular2 的 http
问题:我无法使用 HTML5 路由并被迫散列路由,因为 html5 路由调用服务器而我的 MVC 项目没有相应的控制器。所以服务器不会返回任何内容。
3 回答
在路径路径中添加#可能是像你这样的情况下最常见的解决方案,但......
你有什么特别的理由在 Angular 中使用 MVC 吗?
在我看来,你不需要 MVC - 你可以创建空 ASP.NET 核心项目并添加到你的 HTML/Angular 应用程序 - 干净,简单,舒适,MVC 和 Angular 之间没有冲突;)
将文件(包括
index.html
)添加到wwwroot
并更新Startup.cs
文件:请找到更多信息:
ASP.NET 核心使用静态文件
在 ASP.NET Core 中将 index.html 设为启动文件
如果您打算在 IIS 上使用,则可以使用 URL 重写模块。它基本上告诉 Web 服务器将所有路由 URL 重写为 index.html。 。
“我无法使用 HTML5 路由并被迫散列路由,因为 html5 路由调用服务器而我的 MVC 项目没有相应的控制器。所以服务器不返回任何东西”
https://github.com/aspnet/JavaScriptServices
寻找路由助手也称为 spa 服务 nuget 和 spa 后备路由。
如果没有找到服务器端路由并且路由没有文件扩展名,则应将 index.html 返回到客户端,其中当前路由被角度路由器解释为客户端路由。