将AngularJs与MVC6 / vNext / .NET5一起使用的所有示例都使用wwwroot中的静态index.html文件。完成,但我现在需要加载一个MVC index.cshtml页面,所以我可以将我的config.json中的设置注入页面。
我想要的只是一个默认页面(Home),如果url不是js / css文件或者是api控制器,那么无论加载什么url都会被加载。
我尝试将此添加到我的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" });
});
}
答案 0 :(得分:3)
我认为,您还没有在请求管道中添加使用静态文件,因此请求它们,处理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.UseMvc()之前,必须找到你的调用app.UseStaticFiles(),因为调用静态文件没有到达路由中间件,因为调用按注册顺序执行的中间件。