考虑msdn中的ASP.NET Core MVC教程:我想从windows桌面应用程序中显示MVC应用程序的一个页面(例如创建电影页面(。但是,网页不需要嵌入Winforms/WPF对话框的框架中。如果页面显示在当前浏览器中,那就足够了。
当用户完成并创建了电影时,调用windows的应用程序应该会收到新创建的电影。到目前为止我所拥有的:
- 在Winforms/WPF中重新创建输入表单,并使用底层apicontroller,它可以访问MVC应用程序的存储库(我已将其添加到原始教程中(
- 使用
Process.Start
打开网页,并添加一个标识调用客户端的参数。用户完成后,网页会通过外部消息代理(如RabbitMQ(通知客户端。通知包括创建的实体的id,允许桌面应用程序通过id从apicontroller获取实体 - 想知道是否有类似于.net事件或涉及.net MAUI或else的
var res = Form.ShowDialog()
的本地选项
原因:我想要一个几乎可以在任何地方使用的完整web应用程序。但主机窗口应用程序中会有一个插件,它应该尽可能多地使用网络应用程序,但可以集成到主机应用程序中。示例:Outlook vsto addin带有一个按钮,用于创建电影并在电子邮件正文中包括电影描述等。
我使用了第二个选项:
- My ApiController有一个额外的操作,它返回用
Process.Start
显示的表单的个人url - 客户端在自己的RabbitMQ队列中等待消息,并在执行此操作时阻止所有输入
- 发送表单时,网页会在队列中发布一条消息
- 客户端接收带有项目id的消息,并可以从ApiController获取新创建的项目id并进行处理
因此,我不必在WinForms对话框中复制表单。用户可以从桌面应用程序或直接通过网络应用程序创建新项目。