微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ASP.Net Core MVC和ASP.Net Web Api在Angular2 App中进行HTML5路由

我正在使用ASP.Net Core MVC和ASP.Net Web Api开发Angular2 App.

这是我的基本架构.

ASP.Net核心MVC项目(MyProject.Web)

> Nuget,npm和bower用于依赖. Bower用于将npm依赖项从node_modules复制到wwwroot / libs /
>主页/索引控制器的操作提供加载Angular2和其他依赖项的第一页.
>从ActionMethods加载模板,即Home / About
> SystemJS加载模块.
> Angular2的http服务调用ASP.Net Web Api项目(一个单独的项目而不是mvc)

ASP.Net Web Api项目(MyProject.Api)
  – 每个控制器被指定用于实体的CRUD操作,并响应Angular2的http

问题:我无法使用HTML5路由并被迫散列路由,因为html5路由调用服务器而我的MVC项目没有相应的控制器.所以服务器不会返回任何内容.

解决方法

Problem: I am not able to use HTML5 routing and am forced to hash routing because html5 routing calls the server and my MVC project does not have the corresponding controller. So server doesn’t return anything.

在路径路径中添加#可能是像你这样的情况下最常见的解决方案,但……

你有什么特别的理由在Angular中使用MVC吗?

在我看来,你不需要MVC – 你可以创建空的ASP.NET核心项目并添加到你的HTML / Angular应用程序 – 干净,简单,舒适,MVC和Angular之间没有冲突;)

将您的文件(包括index.html)添加到wwwroot并更新您的Startup.cs文件:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
            app.UseDefaultFiles(); <- Add this line before UseStaticFiles
            app.UseStaticFiles();            
    }
}

请找到更多信息:

> ASP.NET Core Working with Static Files
> Make index.html as startup file in ASP.NET Core

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐