Possiedo un'app MVC ASP.NET. Sto imparando ASP.NET vNext. Per farlo, ho deciso di trasferire la mia app esistente su vNext. La cosa di cui non sono sicuro è come portarlo sulle mie rotte.Migrazione di ASP.NET MVC Percorsi a ASP.NET vNext
Nella mia origine ASP.NET MVC app, ho il seguente:
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" }
);
}
Ora, in questo mondo ASP.NET vNext, io non sono sicuro di come percorsi di installazione. Ho il seguente:
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();
}
}
}
Eppure, non sono sicuro di due cose:
- Come aggiungere gli itinerari ho definito in precedenza RouteConfig.cs .
- Come utilizzare
views/home/Index.cshtml
come percorso predefinito al posto diapp.UseWelcomePage()
.
Cosa c'è di sbagliato in 'app.UseMvc (routes => RouteConfig.RegisterRoutes (routes))'? Questa non è una distinzione vNext, è solo normale MVC, tranne che stai usando OWIN per avviare la tua app piuttosto che registrare esplicitamente i tuoi percorsi in Global.asax. Il routing funziona allo stesso modo, stai chiamando 'RegisterRoutes' da un posto diverso. Per quanto riguarda l'altro problema di Home/Index, basta rimuovere la chiamata a 'UseWelcomePage' - il routing farà ciò che altrimenti avrebbe fatto. –
@AntP - Esiste un approccio più "consigliato" in vNext? Sto cercando di essere il più coerente possibile con vNext in modo che lo impari nel modo corretto. Grazie. –
Hai ancora bisogno di includere i tuoi percorsi nel delegato che stai passando a "UseMvc" - anche se non chiami "RouteConfig".RegisterRoutes (routes) 'lì dentro o semplicemente dichiarare un delegato anonimo e aggiungere tutto il codice di routing lì (come nel tuo esempio corrente) fa davvero poca differenza. Probabilmente lo terrei in 'RouteConfig' anche se solo per evitare di gonfiare il metodo' Configure'. La convenzione vNext imporrebbe semplicemente di utilizzare OWIN per eseguire il bootstrap dell'applicazione (anziché utilizzare l'approccio 'Global.asax'), cosa che si sta già facendo. –