Tôi có một ứng dụng ASP.NET MVC. Tôi đang học ASP.NET vNext. Để làm điều đó, tôi quyết định chuyển ứng dụng hiện có của mình sang vNext. Điều tôi không chắc chắn là, làm thế nào để chuyển qua các tuyến đường của tôi.Di chuyển các tuyến đường ASP.NET MVC sang ASP.NET vNext
Trong nguồn gốc ứng dụng ASP.NET MVC của tôi, tôi đã điều sau đây:
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "Index",
url: "",
defaults: new { controller = "Root", action = "Index" }
);
routes.MapRoute(
name: "Items",
url: "items/{resource}",
defaults: new { controller = "Root", action = "Items", resource = UrlParameter.Optional }
);
routes.MapRoute(
name: "BitcoinIntegration",
url: "items/available/today/{location}",
defaults: new { controller="Root", action="Availability", location=UrlParameter.Optional }
);
routes.MapRoute(
name: "BlogPost1",
url: "about/blog/the-title",
defaults: new { controller = "Root", action = "BlogPost1" }
);
}
Bây giờ trên thế giới ASP.NET vNext này, tôi không chắc chắn làm thế nào để thiết lập các tuyến đường. Tôi đã điều sau đây:
Startup.cs
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Routing;
using Microsoft.Framework.DependencyInjection;
namespace MyProject.Web
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseErrorPage();
app.UseServices(services =>
{
services.AddMvc();
});
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}");
});
app.UseMvc();
app.UseWelcomePage();
}
}
}
Tuy nhiên, tôi không chắc chắn trong hai điều:
- Làm thế nào để thêm các tuyến đường tôi theo quy định tại RouteConfig.cs trước .
- Cách sử dụng
views/home/Index.cshtml
làm đường dẫn mặc định của tôi thay cho sốapp.UseWelcomePage()
.
Có gì sai với 'app.UseMvc (routes => RouteConfig.RegisterRoutes (routes))'? Đây không phải là một sự phân biệt vNext, nó chỉ là MVC thông thường ngoại trừ bạn đang sử dụng OWIN để khởi động ứng dụng của bạn thay vì đăng ký rõ ràng các tuyến đường của bạn trong Global.asax. Định tuyến hoạt động giống nhau, bạn chỉ cần gọi 'RegisterRoutes' từ một vị trí khác. Đối với vấn đề Home/Index khác của bạn, chỉ cần loại bỏ các cuộc gọi đến 'UseWelcomePage' - định tuyến của bạn sẽ làm những gì nó đã làm được nếu không. –
@AntP - Có cách tiếp cận "được khuyến nghị" nhiều hơn trong vNext không? Tôi đang cố gắng nhất quán càng tốt với vNext để tôi tìm hiểu nó một cách chính xác. Cảm ơn bạn. –
Bạn vẫn cần phải bao gồm các tuyến đường của bạn trong đại biểu bạn đang đi đến 'UseMvc' - có hay không bạn gọi là' RouteConfig.RegisterRoutes (routes) 'trong đó hoặc chỉ khai báo một đại biểu ẩn danh và thêm tất cả các mã định tuyến ở đó (như trong ví dụ hiện tại của bạn) thực sự tạo ra rất ít sự khác biệt. Tôi có thể giữ nó trong 'RouteConfig' mặc dù chỉ để tránh bloating phương thức' Configure'. vNext convention sẽ chỉ ra rằng bạn sử dụng OWIN để khởi động ứng dụng của bạn (thay vì sử dụng phương thức 'Global.asax'), mà bạn đã làm. –