Dynamisches Umschreiben von URLs mit MVC und ASP.Net Core

Ich schreibe meine FragSwapper.com-Website (derzeit in Asp 2.0!) Mit ASP.Net Core und MVC 6 neu und versuche, etwas zu tun, das ich normalerweise zusammen mit db mit einem Tool zum erneuten Schreiben von URLs ausführen müsste Code und einige Redirects, aber ich möchte wissen, ob es einen "besseren" Weg gibt, dies in ASP.Net Core zu tun, möglicherweise mit MVC Routing und Redirecting.

Hier sind meine Szenarien ...

URL Zugriff auf die Site:[Wurzel

Was ist zu tun Gehen Sie zur normalen [Home] -Controller- und [Index] -Ansicht (keine [ID]). ... das macht es jetzt:

app.UseMvc(routes =>
{
  routes.MapRoute(
  name: "default",
  template: "{controller=Home}/{action=Index}/{id?}");
});

URL Zugriff auf die Site: [root] / ControllerName / ... yada yada ...

Was ist zu tun Gehe zum Controller, etc ... all das funktioniert auch.

The tricky one: URL Zugriff auf die Site: [root] / SomeString

Was ist zu tun Greifen Sie auf die Datenbank zu und führen Sie eine Logik aus, um zu entscheiden, ob ich eine Ereignis-ID finde. Wenn ich das tue, gehe ich zu [Event] Controller und [Index] View und eine [ID] von allem, was ich gefunden habe. Wenn nicht, versuche ich, eine Host-ID zu finden und gehe zu [Home] Controller und [Organization] View mit DIESER [ID], die ich gefunden habe. Wenn ich ein Ereignis oder einen Host nicht finde, gehe zu dem üblichen [Home] -Controller und der [Index] -Ansicht (keine [ID]).

Das große Problem hierbei ist, dass ich in 2 verschiedenen Controllern zu einer von drei völlig unterschiedlichen Ansichten umleiten möchte.

Unter dem Strich möchte ich also eine Logik ausführen, wenn der Benutzer zum Stammverzeichnis meiner Site gelangt und ein einzelnes "/ Something" darauf hat und diese Logik datenbankgesteuert ist.

Wenn Sie die Frage verstehen, können Sie jetzt aufhören zu lesen ... Wenn Sie verstehen möchten, warum all diese Logik benötigt wird, können Sie weiterlesen, um einen detaillierteren Kontext zu erhalten.

Meine Site hat grundsätzlich zwei Modi: Anzeigen eines Ereignisses und Nicht Anzeigen eines Ereignisses! Normalerweise werden 4 oder 5 Ereignisse gleichzeitig ausgeführt, aber die meisten Benutzer sind nur an einem Ereignis interessiert, aber es ist ungefähr alle 4 Monate ein VERSCHIEDENES Ereignis. Ich habe eine [Host] -Entität und jeder Host hält bis zu 4 Ereignisse pro Jahr ab , eins nach dem anderen. Die meisten Benutzer kümmern sich nur um die Ereignisse eines Hosts.

Ich versuche zu vermeiden, dass ein Benutzer immer zu einer Ereigniskarte wechselt und die betreffende Veranstaltung findet und darauf klickt, da die Anzahl der Anzeigen einer Karte (kostenlos) begrenzt ist und dies wirklich nicht erforderlich ist. In 99,99% der Fälle, in denen sich ein Nutzer auf meiner Website befindet, befindet er sich auf einem Ereignisbildschirm, nicht auf meinem Startbildschirm, und interessiert sich jeweils nur für ein Ereignis. In Zukunft möchte ich es so codieren, dass sie, wenn sie auf meine Website kommen, direkt zu ihrem Event oder einem neuen Event von ihrem Lieblingshost gehen, damit ich viele Klicks vermeiden und meine [Home] -Controller-Seiten für Neulinge fokussieren kann ... aber ich habe noch keine automatische Anmeldung, das ist also ein Problem.

Aber jetzt möchte ich, dass Hosts immer die gleiche URL für ihre Events haben: FragSwapper.com/[Host-Abkürzung] ... und wissen, dass es immer zu ihrem aktuellen Event geht, das alle 4 Monate eine andere ID hat !!!

Crazy ... ich weiß ... aber technisch sehr einfach zu machen, ich weiß nur nicht, wie man es in MVC richtig macht, wenn man weiß, wie die Dinge gemacht werden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage