Yurii N.
Yurii N.

Reputation: 5703

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

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

Answers (1)

Dmitry
Dmitry

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

Related Questions