Reputation: 5703
I'm creating multi-tenancy application, with single database per library, for example.
I want to dynamically add library name to route, for example, when user trying to get all books /Books/GetAllBooks
, I must add library name, which could be retrieved from database, for example: /LibraryName/Books/GetAllBooks
, so the user can get all books only from the library, which he belongs to.
What should I do? Implement my own IRouter, my own template route, something else?
Upvotes: 1
Views: 3571
Reputation: 16795
Easy path:
Add id
to your url. Look at url of this question:
https://stackoverflow.com/questions/36718499/dynamically-add-route-value-parameter-from-database-in-asp-net-core
You can change last path segment to anything:
https://stackoverflow.com/questions/36718499/foo-bar
still bring you here.
Without id:
Implement IRouter
. You will need to implement two methods:
1) async Task RouteAsync(RouteContext context)
which parse incoming request and add correct "controller", "action" and "id" values into context.RouteData
collection. Later, MVC will use this info to call your controller.
2) VirtualPathData GetVirtualPath(VirtualPathContext context)
which builds url (string) for controller+action+id values, provided in context.Values
collection.
This can help you:
Upvotes: 2