AngularJs路由,MVC6/vNext/.NET5和MVC视图
本文关键字:MVC 视图 NET5 vNext MVC6 AngularJs 路由 | 更新日期: 2023-09-27 18:17:44
在MVC6/vNext/中使用AngularJs的所有示例。NET5都使用位于目录中的静态index.html文件。这样做了,但我现在需要加载一个MVC索引。而不是CSHTML页面,所以我可以注入设置,在我的配置。Json到页面上。
所有我想要的是一个默认页面(主页),这是加载不管什么url请求,只要url不是一个js/css文件或api控制器。
我已经尝试将此添加到我的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,用户可以访问像
这样的urlhttp://localhost:6000/page
http://localhost:6000/page/9
http://localhost:6000/another
http://localhost:6000/another/9/sub
所有这些都应该加载Home/Index。CSHTML页面,让angular接管路由。
我已经看到了一个选项添加到web。但我不会使用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()之前定位,对静态文件的请求不会到达路由中间件,因为调用中间件按注册顺序执行。
docs.asp.net文档