【发布时间】:2021-03-11 20:45:35
【问题描述】:
我是一名资深的 C# WinForms 开发人员,并且我开始了一个新的 E.R.P.项目,去年。为了打造可以持续使用 20 年的东西,我研究了下一个要使用的大型技术。由于我的 C# 知识和转向浏览器应用程序的愿望,我决定使用 Blazor Wasm(客户端)。我构建了一个 API 来处理所有的 CRUD - 完美。现在,我正在构建 Blazor 应用程序并完成前几页。这些页面是功能性工作区域,例如“设置项目”或“输入订单”。 “MainLayout”页面加载一个导航菜单,以便用户可以打开不同的页面。
在我过去的 WinForms 应用程序中,它是一个 MDI,因此用户可以在一个屏幕中设置新项目,然后在另一个屏幕中输入订单,并且能够随意切换不同的窗口。菜单保持可见,以便他们可以根据需要打开新表单(文档)。
现在我正在使用新的浏览器应用程序,我想如果我加载一个新页面,它会将当前页面更改为新页面并重新加载菜单。事实上,整个网站都会重新加载。如果我将新页面加载到新选项卡中,就像加载了一个全新的站点实例。我实际上创建了一个单独的布局并将工作页面与 MainLayout 分开加载,该页面将加载,但好像服务尚未加载(烤面包机之类的东西不起作用)。所以我在网上搜索了一下,似乎我想要一个像 WinForms MDI 一样运行的网络应用程序可能处于未知领域。
显然,我是试图进入 Blazor Web 的 C# 人员之一。是否可以让 Blazor WASM 像 MDI 一样工作?
【问题讨论】:
-
这可能是可能的,但您为什么要这样做?对模仿 Winform 的痴迷导致了我们现在称为 Web 表单的崩溃。 ASP.NET MVC 是对此的直接回应。在大多数情况下,我们甚至不再使用 IFrame。简而言之,现在有更好的模型。
-
谢谢罗伯特·哈维。我怀疑这可能是第一反应。你是对的,我试图模仿在 WinForms 中运行良好的东西。这是经过验证的。当然,我应该考虑将更多功能打包到一个页面中。但是每个页面都有安全考虑,我不希望有人输入销售能够管理定价或项目,这将在不同的页面上。另外,您如何向用户解释如果他们转到不同的页面,他们将失去他们只需花费几分钟输入新订单的销售订单屏幕?
-
how to you explain to a user that they will lose their sales order screen they just spend several minutes entering a new order, if they go to a different page?-- 亚马逊没有这个问题。如果我愿意,我可以在我的购物车中放置几天或几周的商品。我可以关闭我的浏览器,明天再打开它,我的项目仍然存在。 -
你说的没错,毫无疑问。而且我确实有一个保存功能可以保存订单。我指的是刚开始下订单,还没有完成到可以保存的地步。这是一个 ERP 系统,具有复杂的客户、运输和定价模型,通常必须在完全输入订单之前对其进行更新。甚至在您开始输入项目之前。所以不可避免地会发生页面切换。在您可以继续重新打开原始页面之前,在 Web 应用程序中完成第 1、2、3 页中的工作是否正常?也许使用对话进行准备工作?
-
@RobertHarvey,这个讨论对我来说很棒。我意识到我需要学习如何发展和使用可用的工具以不同的方式实现相同的效果。我花了很多时间回顾对话框工具,以及滑块和其他材料设计工具。我正在使用 DevExpress Blazor,它仍在不断发展。无论哪种方式,我都可以将不同的工具与更好的用户体验设计结合起来,以达到相同的效果。感谢您帮助我解决这个问题!请发布答案,以便我批准。感谢您和 DotNetDublin 的建议。
标签: c# winforms mdi blazor-webassembly