asp.net mvc6 / angular2 路由
asp.net mvc6 / angular2 routing
我有 asp.net mvc6 项目。在客户端,我想使用 angular2 创建单页应用程序。这意味着我有两个地方可以定义路由。
就SPA而言,路由必须在angular2端,但是当用户刷新页面时如何处理? MVC returns 404.
一种方法是在 mvc6 中设置启动路径:
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "OAuth", action = "Index" });
});
然后控制器将 Request.Path 给 angular2.
然而这个{*url}不识别*.map和其他静态文件。
也可能有我想使用静态页面的场景 Error.html 等
有没有更好的方法来处理双方 (server/client) 的路由?
我遇到了同样的问题,因此决定使用视图而不是静态文件。
我已经使用一个具有 2 个操作的家庭控制器设置了 MVC:索引和登录。
index.cshtml 和 login.cshtml 中的应用程序 boostraps 是一个简单的登录页面。
我的 startup.cs 文件中的路由是这样配置的:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "login",
template: "login",
defaults: new { controller = "Home", action = "Login" });
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" });
});
在我的 AppComponent 中(使用 Angular RC1):
@Routes([
{ path: '/Dashboard', component: Dashboard}
])
在 http://localhost/Dashboard keeps me on the dashboard view, whereas http://localhost/Login 中刷新页面会将我重定向到 angular 应用程序之外的登录页面。
希望对您有所帮助
我有 asp.net mvc6 项目。在客户端,我想使用 angular2 创建单页应用程序。这意味着我有两个地方可以定义路由。 就SPA而言,路由必须在angular2端,但是当用户刷新页面时如何处理? MVC returns 404.
一种方法是在 mvc6 中设置启动路径:
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "OAuth", action = "Index" });
});
然后控制器将 Request.Path 给 angular2.
然而这个{*url}不识别*.map和其他静态文件。 也可能有我想使用静态页面的场景 Error.html 等
有没有更好的方法来处理双方 (server/client) 的路由?
我遇到了同样的问题,因此决定使用视图而不是静态文件。
我已经使用一个具有 2 个操作的家庭控制器设置了 MVC:索引和登录。
index.cshtml 和 login.cshtml 中的应用程序 boostraps 是一个简单的登录页面。
我的 startup.cs 文件中的路由是这样配置的:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "login",
template: "login",
defaults: new { controller = "Home", action = "Login" });
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" });
});
在我的 AppComponent 中(使用 Angular RC1):
@Routes([
{ path: '/Dashboard', component: Dashboard}
])
在 http://localhost/Dashboard keeps me on the dashboard view, whereas http://localhost/Login 中刷新页面会将我重定向到 angular 应用程序之外的登录页面。
希望对您有所帮助