gpt4 book ai didi

c# - AngularJs 路由、MVC6/vNext/.NET5 和 MVC View

转载 作者:太空狗 更新时间:2023-10-30 01:33:38 30 4
gpt4 key购买 nike

所有将 AngularJs 与 MVC6/vNext/.NET5 一起使用的示例都使用 wwwroot 中的静态 index.html 文件。这样做了,但我现在需要加载一个 MVC index.cshtml 页面,这样我就可以将 config.json 中的设置注入(inject)到页面上。

我想要的只是一个默认页面(主页),无论请求什么 url,都会加载该页面,前提是 url 不是指向 js/css 文件或 api Controller 。

我已经尝试将它添加到我的 Configure(IApplicationBuilder app, IServiceProvider serviceProvider) 方法中,但是现在,我的 js 和 css 文件都拉回了 Home/Index.cshtml 文件

app.UseMvc(options =>
{
options.MapRoute("Api",
template: "api/{version}/{controller}/{action?}",
defaults: new { version = "v1", controller = "Page" });

options.MapRoute(
name: "default",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" });
});

我的应用程序加载到默认地址 http://localhost:port , 没有额外的文件夹开始。通过 angularJs,用户可以访问诸如

http://localhost:6000/page
http://localhost:6000/page/9
http://localhost:6000/another
http://localhost:6000/another/9/sub

所有这些都应该加载 Home/Index.cshtml 页面,并让 Angular 接管路由。

我看到了一个选项可以将一些东西添加到 web.config 文件,但我不会使用 IIS,所以这不是一个选项

编辑如果我更新我的路线,它似乎加载页面和所有 js/css 文件,这很棒。但是,如果我尝试直接转到角度路线,则不会加载任何内容。

app.UseMvc(options =>
{
options.MapRoute("Api",
template: "api/{version}/{controller}/{action?}",
defaults: new { version = "v1", controller = "Page" });

options.MapRoute(
name: "default",
template: "{controller}/{action?}",
defaults: new { controller = "Home", action = "Index" });
});

编辑 2

public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider)
{
// add automapper registrations
app.RegisterMappingFiles();

// Enable all static file middleware
app.UseStaticFiles();

// Enable Mvc for controllers
app.UseMvc(options =>
{
options.MapRoute(
name: "default",
template: "{controller}/{action?}",
defaults: new { controller = "Home", action = "Index" });
});

}

最佳答案

我认为,您没有在请求管道中添加使用静态文件,因此针对它们请求,处理 MVC 路由:

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();

app.UseMvc(options =>
{
options.MapRoute("Api",
template: "api/{version}/{controller}/{action?}",
defaults: new { version = "v1", controller = "Page" });

options.MapRoute(
name: "default",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" });
});

}

您的调用 app.UseStaticFiles() 必须位于调用 app.UseMvc() 之前,对静态文件的请求不会到达路由中间件,因为调用中间件是按注册顺序执行的。

Documentaion on docs.asp.net

关于c# - AngularJs 路由、MVC6/vNext/.NET5 和 MVC View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143426/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com