I am re-writing my FragSwapper.com website (currently in Asp 2.0!) with ASP.Net Core and MVC 6 and I'm trying to do something I would normally have to break out a URL Re-Write tool along with db code and some Redirects but I want to know if there is a "better" way to do it in ASP.Net Core possibly with MVC Routing and Redirecting.
Here are my scenarios...
URL Accessing the site: [root]
What to do: Go to the usual [Home] Controller and [Index] View (no [ID]). ...it does this now:
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
URL Accessing the site: [root]/ControllerName/...yada yada...
What to do: Go to the Controller, etc...all THIS works too.
The tricky one: URL Accessing the site: [root]/SomeString
What to do: Access the database and do some logic to decide if I find an Event ID. If I do I go to [Event] Controller and [Index] View and an [ID] of whatever I found. If not I try to find a Host ID and go to [Home] Controller and [Organization] View with THAT [ID] I found. If I don't find and Event or Host go to the usual [Home] Controller and [Index] View (no [ID]).
The big gotcha here is that I want to Redirect to one of three completely different views in 2 different controllers.
So the bottom line is I want to do some logic when the user comes to my site's root and has a single "/Something" on it and that logic is database driven.
If you understand the question you can stop reading now...If you feel the need to understand why all this logic is needed you can read on for a more detailed context.
My site has basically two modes: Viewing an Event and Not Viewing an Event! There are usually 4 or 5 events running at an one time but most users are only interested in one event but it's a DIFFERENT event every 4 months or so..I have a [Host] entity and each Host holds up to 4 events a year, one at a time. Most users only care about one Host's events.
I'm trying to avoid making a user always go to an event map and find the event and click on it since I have a limit to how many times I can show a map (for free) and it's really not necessary. 99.99% of the time a user is on my site they are on an Event screen, not my Home screens, and are interested in only one event at a time. In the future I want to code it so if they come to my website they go right to their event or a new event from their favorite host so I can avoid a LOT of clicks and focus my [Home] controller pages for newbs...but I don't have auto-login working yet so that's on the back burner.
But for now I want hosts to always have the same url for their events: FragSwapper.com/[Host Abbreviation] ...and know it will always go to their current event which has a different ID every 4 months!!!
Crazy...I know...but technically very easy to do, I just don't know how to do it properly in MVC with how things are done.