Dynamically add route value parameter from database in Asp.Net Core

asp.net-core asp.net-core-mvc c# entity-framework-core multi-tenant

Question

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?

1
1
4/19/2016 12:32:13 PM

Accepted Answer

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:

2
5/23/2017 12:16:12 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow