gpt4 book ai didi

asp.net-mvc - Multi-Tenancy Razor 页面

转载 作者:行者123 更新时间:2023-12-01 04:31:05 25 4
gpt4 key购买 nike

我正在尝试设置 Razor Pages 路由以允许为不同的租户呈现不同的 View 。

我有一个目录结构如下:

/Pages
Test.cshtml.cs
/Tenant1
Test.cshtml
/Tenant2
Test.cshtml

鉴于我已经能够决定需要哪个租户,如何配置路由以映射某些路径,例如 localhost:8080/TestTenant1/TestTenant2/Test意见。

最佳答案

使用动态 View 内容(通过局部 View )。
使用此解决方案,Test页面将根据用于调用它的路由动态加载不同的 View 。
这意味着您只有一个 Test页面但里面cshtml文件,您将从部分 View 中获取内容(稍后会详细介绍)。
首先,您需要像这样重命名文件....

/Pages
Test.cshtml.cs
/Tenant1
_Test.cshtml // note it is prefixed with an underscore!
/Tenant2
_Test.cshtml // prefixed with an underscore too.

The naming convention for a partial view is to prefix the file with an underscore (_). This will immediately identify to someone looking at your project files as a "non-routable" page.


然后你添加一点逻辑来呈现部分 View ......
测试.cshtml
@{
switch(...) // used a switch statement to illustrate the solution
{
case "Tenant1":
await Html.PartialAsync("~/Pages/Tenant1/_Test.cshtml");
break;
case "Tenant2":
await Html.PartialAsync("~/Pages/Tenant2/_Test.cshtml");
break;
default:
throw new NotImplementedException();
}
}
您可以阅读部分 View here .
额外:使用相同的页面模型。
我还注意到您曾想使用相同的页面模型(意味着为两者共享 Test.cshtml.cs。这是相当微不足道的,但为了答案的完整性,这里是您将如何做到这一点......
/Pages/Test.cshtml.cs
namespace Foo.Pages
{
public class MySharedTestModel : PageModel
{
...
}
}
/Pages/Tenant1/Test.cshtml /Pages/Tenant2/Test.cshtml
@page
@using Foo.Pages
@model MySharedTestModel

...

关于asp.net-mvc - Multi-Tenancy Razor 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54108337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com