我们正在使用 Blazor 开发一个“门户”类型的应用程序,我们希望能够拥有多个位于其他 URL 上的“项目”(例如集成或表单)。 (像天蓝色网络应用程序一样思考)
所以我们可能有
Portal.ourcompany.com - 我们的门户应用程序,它有一个菜单+标题等,并将 Razor 页面加载为单独容器中页面的一部分。此应用程序是客户端 WebAssembly 应用程序。我们使用.net 8。
然后我们可能有https://ourcompanyintegrationapp.azurewebsites.net/,它提供了一个应该加载到容器中的剃刀页面,同时保留菜单和标题(而不是重新加载整个页面)。所以例如。我导航到 Portal.ourcompany.com/integration1,它会将远程页面从 azure 函数加载到容器中。
两者之间当然需要进行身份验证(我们使用 oauth2)(但我很确定我们知道这一点)
现在我可以看到如果我们切换 URL 并再次加载整个页面如何执行此操作,但这并不是我们想要的。
关于如何做到这一点有什么想法吗? (如果可能的话?)
我以为 blazor 路由可以做到这一点,但看来我错了......
我们可以做什么,**但不想要: ** 在页面/网址之间“无缝”移动,保持身份验证等。
保持相同的 url 并使用 YARP 加载远程页面
**我们想要什么:**
将外部来源的 .razor 页面加载到 WebAssembly 应用程序内的容器中,而无需重新加载整个页面。
本质上就像拥有一个“原生”iframe。
编辑:澄清
嗨,
非常感谢您花时间回答并要求澄清,非常感谢。 :)
所以,明确地说,我想要实现的是:
https://pasteboard.co/BixCfKD1xHnk.png
红色框中的区域当前加载某个页面,例如portal.mycompany.com/Page1,无需刷新标题或菜单 - 因此非常快速且干净。
当前每个页面都会加载一组显示数据的 blazor 组件 - 主要以网格的形式,然后链接到外部页面。当我们访问外部页面时,它会从我们的旧站点(.net core)加载它们并进行平滑过渡,但它确实会传输到不同的 URL 并加载一个全新的页面。通常,当单击网格中的链接时,它会打开一个表单,以输入有关正在显示的任何对象的数据。
那么!
我希望做的是从外部服务器加载红色框中的内容 - 本质上是使portal.mycompany.com/page1从server1.mycompany.com/page1加载内容,同时停留在portal.mycompany.com/page1上并且不重新加载菜单和标题。
您不能从不同来源“下载并使用”.razor 页面,必须先对其进行编译。或者你只想要生成的 html?
但也许 iframe 就是您所寻找的?