Ich habe eine ASP.NET MVC-App. Ich lerne ASP.NET vNext. Um dies zu tun, habe ich beschlossen, meine bestehende App auf vNext zu portieren. Die Sache, über die ich mir nicht sicher bin, ist, wie ich meine Routen überbrücken soll.Migrieren von ASP.NET MVC-Routen zu ASP.NET vNext
In meiner Herkunft ASP.NET MVC-app, ich habe folgendes:
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" }
);
}
Jetzt in diesem ASP.NET vNext Welt, ich bin nicht sicher, wie man Setup-Routen. Ich habe folgendes:
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();
}
}
}
Trotzdem bin ich nicht sicher, von zwei Dingen:
- Wie die Routen ich in RouteConfig.cs definiert hinzuzufügen zuvor .
- So verwenden Sie
views/home/Index.cshtml
als Standardpfad anstelle vonapp.UseWelcomePage()
.
Was ist los mit 'app.UseMvc (Routen => RouteConfig.RegisterRoutes (Routen))'? Dies ist kein vNext-Unterschied, sondern nur regulärer MVC, außer dass Sie OWIN verwenden, um Ihre App zu starten, statt Ihre Routen explizit in Global.asax zu registrieren. Das Routing funktioniert genauso, du rufst einfach 'RegisterRoutes' von einem anderen Ort an. Wie bei Ihrem anderen Home/Index Problem, entfernen Sie einfach den Anruf zu 'UseWelcomePage' - Ihr Routing wird tun, was es sonst getan hätte. –
@AntP - Gibt es in vNext einen "empfohlenen" Ansatz? Ich versuche, mit vNext so konsistent wie möglich zu sein, damit ich den richtigen Weg finde. Vielen Dank. –
Sie müssen Ihre Routen immer noch in den Delegaten aufnehmen, den Sie an "UseMvc" übergeben - unabhängig davon, ob Sie "RouteConfig" aufrufen oder nicht.RegisterRoutes (routes) 'da drin oder einfach nur einen anonymen Delegaten zu deklarieren und dort den ganzen Routing-Code hinzuzufügen (wie in deinem aktuellen Beispiel) macht wirklich wenig Unterschied. Ich würde es wahrscheinlich in 'RouteConfig' behalten, nur um zu vermeiden, dass die' Configure'-Methode aufgebläht wird. Die vNext-Konvention würde lediglich vorschreiben, dass Sie OWIN verwenden, um Ihre Anwendung zu bootstrappen (anstatt die "Global.asax" -Ansatz zu verwenden), die Sie bereits machen. –