Tôi đang phát triển một dự án liên quan đến nhiều Ứng dụng Trang Đơn được lưu trữ trên một ứng dụng web .Net Core 1.0 đơn lẻ.. Định tuyến MVC NetNet: Đặt MapSpaFallbackRoute Điều kiện Mỗi Bộ điều khiển
Mục đích là phân vùng mỗi SPA sao cho tất cả chúng đều tồn tại riêng biệt, mỗi mục có Chế độ xem và Bộ điều khiển riêng.
Trong Startup.cs, đang sử dụng Microsoft.AspNetCore.SpaServices MapSpaFallbackRoute để bỏ qua các liên kết sâu tới SPA (trong trường hợp này là Angular 2), vì vậy MVC không bị lẫn lộn và ném 404 khi làm mới trang.
Tôi có nó hoạt động cho một SPA tại một thời điểm khi tôi đặt Bộ điều khiển theo cách thủ công trong MapSpaFallbackRoute, nhưng tôi không thể tìm ra cách thiết lập điều kiện cho mỗi Bộ điều khiển SPA.
Tôi giả định rằng sự kết hợp giữa Mapwhen() và Run() sẽ giúp tôi có được vị trí cần thiết, nhưng dường như tôi không thể nhận được cú pháp chính xác.
Giả sử SPAs được đặt tên 'Dash1', 'Dash2', vv Các tuyến đường dự phòng sau hoạt động hoàn hảo cho Dash1:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Dash1", action = "Index" });
});
Tôi đã thử điều này:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.Map("/Dash1", HandleDash1);
}
private static void HandleDash1(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Dash1", action = "Index" });
});
}
}
.. Nhưng sau đó khi tôi điều hướng đến Dash1 và cố gắng làm mới trang, trình duyệt sẽ thêm '/ Dash1 /' vào tất cả các yêu cầu http và phá vỡ mọi thứ.
Hoàn toàn đoán ở đây, nhưng bạn đã thử 'routes.MapSpaFallbackRoute (" {controller}/spa-fallback ", mới {action =" Index "});' trong phương pháp tiếp cận đầu tiên của bạn? –
Tôi đã thử nhưng vẫn nhận được 404 khi làm mới trang.Tham số chuỗi đầu tiên chỉ là tên của tuyến đường, nhưng có vẻ như nó có thể thực hiện theo cách đó; chỉ cần đăng ký Bộ điều khiển hiện tại làm dự phòng. – David