質問: 私は、マルチテナントアプリケーションを作成しています。例えば、ライブラリごとに1つのデータベースがあります。 たとえば、すべての書籍`/Books/GetAllBooks`を取得しようとすると、データベースから取得できるライブラリ名を追加する必要があります。たとえば、 `/LibraryName/Books/GetAllBooks`ように、ライブラリ名を動的に追加する必要があります。ユーザーは彼が所属する図書館からのみすべての図書を入手することができます。 私は何をすべきか?私自身のIRouter、自分のテンプレートルート、他のものを実装しますか?
回答: **簡単なパス** : あなたのURLに`id`を追加してください。この質問のURLを見てください: `https://stackoverflow.com/questions/36718499/dynamically-add-route-value-parameter-from-database-in-asp-net-core` 最後のパスセグメントを何かに変更することができます: `https://stackoverflow.com/questions/36718499/foo-bar`依然としてあなたをここに連れて行きます。 **idなし** : `IRouter`実装し`IRouter` 。 2つの方法を実装する必要があります。 1) `async Task RouteAsync(RouteContext context)` 。着信要求を解析し、 `context.RouteData`コレクションに正しい「コントローラ」、「アクション」、および「id」値を追加します。その後、MVCはこの情報を使用してコントローラを呼び出します。 2) `VirtualPathData GetVirtualPath(VirtualPathContext context)` `context.Values`コレクションで提供されるcontroller + action + id値のurl(文字列`VirtualPathData GetVirtualPath(VirtualPathContext context)`を構築する`VirtualPathData GetVirtualPath(VirtualPathContext context)` 。 これはあなたを助けることができます: * ASP.NET 5(vNext)でカスタムIRouterを実装するMVC 6 * 起動後にMVC6のルートコレクションを変更する