我创建了一个简单的 Blazor MAUI 项目。\n我添加了一个简单的 Razor 类库,其中包含两个 JavaScript 文件、一个带有三个按钮的简单 razor 组件以及两个用于 JavaScript 方法调用的 C# 包装类。\n其中一个 JavaScript 文件使用导出\n第一个包装类使用生成的默认方法代码
\n{\nvar module = await moduleTask.Value;\nreturn await module.InvokeAsync<string>(\xe2\x80\x9cshowPrompt\xe2\x80\x9d, message);\n}\nRun Code Online (Sandbox Code Playgroud)\n第二个包装器使用 JSRuntime JS
\n{\nreturn await JS.InvokeAsync<string>(\xe2\x80\x9cshowPrompt\xe2\x80\x9d, message);\n}\nRun Code Online (Sandbox Code Playgroud)\n我的基本 Razor 组件定义如下:
\n@inject ExampleJsInterop exampleJsWithModule\n@inject IJSRuntime js\n@inject ExampleJsInteropWithJSRunTime exampleJsRunTime\n<div class=\xe2\x80\x9cmy-component\xe2\x80\x9d>\nThis component is defined in the <strong>RazorClassLibrary</strong> library.\n<button class=\xe2\x80\x9cbtn btn-primary\xe2\x80\x9d @onclick=\xe2\x80\x9cCallJSFunctionFromCSWithModule\xe2\x80\x9d>Call JS function from C# with Module</button>\n<button class=\xe2\x80\x9cbtn btn-primary\xe2\x80\x9d @onclick=\xe2\x80\x9cCallJSFunctionFromCSWithJSruntime\xe2\x80\x9d>Call JS function from C# With JSruntime</button>\n<button class=\xe2\x80\x9cbtn btn-primary\xe2\x80\x9d @onclick=\xe2\x80\x9cCallJSFunctionFromScript\xe2\x80\x9d>Call JS function from script</button>\n</div>\n@code{\nprivate async …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个小型 Blazor Maui 应用程序示例,该应用程序使用身份服务器对用户进行身份验证。我试图达到可以从 Maui 应用程序登录的程度,然后每当我使用 blazorWebview 组件时,都可以访问用户的身份验证状态以进行身份验证决策。
目前,我在 Maui 应用程序的 razor 组件中设置了身份服务器登录流程,这完成了登录流程。
现在我希望能够将该登录状态/主体信息传递到 Blazor Web 视图以在组件中使用(其中一些在外部类库中引用)。有人有幸这样做过吗?
(另外,我已按照此处的 Microsoft 文档实现我自己的自定义身份验证状态提供程序,并将其添加到依赖项注入中,但没有说明如何将身份验证信息传递到 Blazor Web 视图)。
我想做一个将图片保存到文件夹的下载器应用程序。该应用程序应该可以在 Windows 和 Macos 上运行,稍后可能会在 Android 和 iOS 上运行。
我还没有找到选择目标文件夹的方法。关于如何使用 blazor 或 xaml .NET MAUI 应用程序实现它有什么想法吗?
我使用 Maui 预览版(现在是候选版本)和 blazorwebview 来构建一个相当简单的应用程序,该应用程序连接到 Web 服务并同步数据。
Windows 和 Android 版本飞逝而过。iOS 版本的推出经历了漫长的过程。升级我的 Mac(以及一长串解决方法)后,我终于能够通过 testflight 部署一些构建。
在 iOS 版本模拟器中工作正常,但在真实设备上,它在解析 JSON 时抛出一个奇怪的错误(在进行反序列化时 - 我使用的是 newtonsoft)“MyObject 上的 MyProp 的错误设置值”(名称已更改)。
经过一番努力后,我在设备上调试了它并且运行良好。所以这让我得出结论,这一定是一个发布优化问题(它没有加载我的所有类,因此反序列化失败)。
但是,无论我在 csproj 文件中更改什么链接器设置(full、sdkonly 等),发布版本都不起作用。我可以看到包大小随着这些变化而上下变化,所以它们显然正在发挥作用。我现在已经通过 testflight 部署了调试版本,并且工作正常。
在我看来,如果链接器设置相同,那么调试与发布版本应该相同,但显然存在差异。
包的发布版本似乎总是调试大小的两倍(使用不同的链接器设置复制,即 sdkonly 发布是双 sdkonly 调试),因此看起来它在发布包中存储了两个构建?
另外,当在发布模式下构建时,构建大约需要 15 分钟,而调试大约需要 3 分钟。所以肯定存在我所遗漏的显着差异。谁能解释一下吗?
在 .Net MAUI Blazor 中,我可以使用 img 标签来显示 wwwroot 文件夹中的图像。但是如何显示设备内部存储中的图像呢?以及如何显示应用程序资源中的图像?
我想去毛伊岛并为我确定了第一个项目。现在我必须决定是使用 Blazor 还是 XAML。我的应用程序应具有以下技术要求:
个人经历:我几年前做过一些 WPF 编程,还深入研究了 Blazor 和 Xamarin Forms(仅限初学者级别)。
您建议从哪个技术堆栈开始?XAML 还是 Blazor?
我们如何检测 .NET Maui Blazor Hybrid 中的滑动手势?我已经在本机 .NET Maui 中看到了滑动手势示例,但我找不到 .NET Maui Blazor Hybrid 的任何示例。请帮我
我在 Android 上有一个 MAUI Blazor 应用程序,我想在其上使用 Google 广告。到目前为止,我找不到办法做到这一点。
我发现一些解决方案涉及使用 MauiMTAdmob 插件,但它对我不起作用。我遇到了很多错误,之后我什至无法从项目中卸载 nuget 包。
有人设法在最新版本的 MAUI 上使用 Admob 吗?
MAUI 上有对 admob 的官方支持吗?未来还会有吗?
是否可以在每次加载页面时运行一段代码,无论是导航到还是任何其他情况?
像重写 OnNavigate 方法之类的东西?
我正在构建 .NET 6 MAUI Blazor 应用程序。该应用程序有一个顶部导航,可以让用户从当时所在的应用程序中的任何位置转到他们的个人资料。
\n像这样使用导航管理器:navManager.NavigateTo($"/Profile/{loggedInUser.Username}");在所有情况下都有效,除了一种情况,如果用户当前在其他人的个人资料上,则导航管理器不执行任何操作。
我相信这是因为当前页面和它试图访问的页面本质上是相同的页面Profile.razor,唯一的区别是 URL 的用户名部分/Profile/{username},应用程序通过该部分知道将用户数据加载到页面上。
我已经像这样解决过它
\nnavManager.NavigateTo("/");\nnavManager.NavigateTo($"/Profile/{loggedInUser.Username}");\nRun Code Online (Sandbox Code Playgroud)\n通过先导航到另一个页面然后返回到个人资料页面,导航成功。
\n目前这对我来说不会造成问题,因为页面Index.razor不显示数据库中的任何数据并立即加载,因此转换不明显。但将来索引页面将是加载最多数据的页面,这种解决问题的方法并不是一个好的方法,因为用户将首先看到索引页面加载。此外,不会有一个页面不需要加载任何数据,因此我无法像我在这里所做的那样将其设置为立即运行其他页面。
如果我像这样使用导航管理器的forceLoad选项navManager.NavigateTo($"/Profile/{loggedInUser.Username}", true);\n我只会收到一条错误消息:
\n\n嗯\xe2\x80\xa6 无法访问此页面。https://0.0.0.0/Profile/username上的网页可能存在问题,或者可能已永久移至新网址。
\n
在配置文件页面上的 OnInitializedAsync() 函数中,我根本无法使用断点捕获它进入页面。
\n顶部导航是一个 Razor 组件,它自己始终加载在MainLayout.razor
<div class="page @DarkTheme()">\n <TopNav/>\n <main>\n <article>\n @Body\n </article>\n </main>\n <BottomNav/>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n它不是“个人资料”页面顶部的一个 div,我可以在其中编写不同的函数,因此它只是重新加载页面并通过将该 ID 设置为请求的 ID 来获取登录用户的数据。\n另外我不知道如何找出正文中加载的页面,TopNav.razor因此我可以尝试进行相同的 id 交换。
英语不是我的母语,这是我在这里发布的第一个问题,但我希望我足够好地描述了这个问题,以便人们能够理解。如果您需要更多信息或有任何疑问,我将很乐意为您解答。
\n