【发布时间】:2022-12-29 14:07:36
【问题描述】:
我正在寻找如何创建脚手架 blazor组件.
我已经知道如何在 blazor 服务器应用程序上创建它,我想在 wasm 应用程序上做同样的事情,但可以找到方法。我的 blazor wasm 是“ASP.NET Core Hosted”(和 PWA),所以你有一个后端项目(和一个“共享项目”),它拥有所有控制器并管理 EF 数据上下文。
在 VS 上,当您生成一个托管 ASP.NET Core 的新 blazor wasm 项目时,它会创建 3 个项目:客户端组件(wasm 本身)、服务器组件(数据访问)和共享组件(模型)
我有 EF 核心和 dbcontext服务器项目,以及模型中的共享项目,但可以找到如何创建所有 CRUD 组件客户项目。
在 Blazor 服务器上,我可以这样做:
最后:
然后它创建了这样的东西:
但是所有的“.cshtml”都是这样的:
我想要类似于自动生成的天气组件的 blazor 组件:
如果我在“添加新脚手架项目”中选择“Razor 组件”,我得到的只是一个空组件。
我一直在谷歌上搜索很多,但找不到任何可以帮助我生成此内容的东西,也许这是不可能的,我不知道,或者我可能不了解某些东西。
Edit1:澄清 wasm“ASP.NET 核心托管”
Edit2:添加了有关我正在使用的项目类型的更多详细信息
【问题讨论】:
-
WASM 代码将在客户端而不是服务器上运行,并且客户端将无法访问数据库(在服务器上运行),所以我不确定脚手架是否能够以相同的方式工作,即使是通过 SignalR。要与数据/实体交互,您需要服务器渲染以实现更直接的绑定,或者让您的 WASM 模型从服务器请求数据。我对 Blazor 还不是很深入,所以很可能有其他人知道的选项可能无法通过脚手架获得。
-
谢谢你们,我忘了解释一些事情,我的 blazor wasm 是“ASP.NET Core Hosted”(和 PWA),所以你有一个后端项目(和一个“共享项目”),它拥有所有控制器并管理 EF数据上下文。我将编辑我的问题以澄清这一点。我希望脚手架可以通过服务器项目工作,也许这是不可能的
-
您误解了所涉及的内容以及 SPA(而不仅仅是 Blazor WASM)的作用。 Blazor WASM 在浏览器上运行。那里没有数据库。它只能通过 HTTP API 与服务器对话。这就是 HttpClient 类所做的。另一方面,EF Core 在服务器项目上运行,在服务器上,只能用于为要用于提供 SPA 的 HTTP API(例如 Web API)提供数据。您尝试使用的
Razor Pages向导只能在单个 Razor Pages 项目中生成类。这根本不是这里的情况 -
谢谢你的回复,我想我已经知道你在说什么了。 Blazor wasm 在浏览器上运行,是的,但可以使用 hub 或 api 与后端通信(后端是 EF 所在的位置)。我认为我没有解释得太好,我只是假设了我的问题的一些事情(比如项目组件 VS 自动生成)。我想要的是一种为模型中的每个实体(模型位于“共享项目”)的“客户端”项目生成 blazor crud 组件的方法。我已经生成了。
-
Blazor 还是比较新的,还没有 CRUD 页面生成。我怀疑它是否在功能列表中。当您需要(大量)CRUD 页面时,请使用 MVC 或 Razore 页面。然后将 Blazor 用于应用程序中更有趣的部分。
标签: c# entity-framework blazor blazor-webassembly scaffolding