我有一个关于 Blazor 服务器端的问题。
我想@page用变量或属性定义路由 url。
我现在可以使用以下默认方法
@page "/route-url"
<h1>Page Test</h1>
@code {
}
Run Code Online (Sandbox Code Playgroud)
但我想使用如下方法
@page MenuItem.Role
<h1>Page Test</h1>
@code {
}
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的方法然后抛出异常。就像下面的异常一样。
C:\Projects\TestBlazorProject\Pages\TestPage.razor(1,7): error RZ1016: The 'page' directive expects a string surrounded by double quotes. [C:\Projects\TestBlazorProject\TestBlazorProject.csproj]
Run Code Online (Sandbox Code Playgroud)
如何@page使用任何不同的变量或任何类属性定义路由 url?
在 JavaScript 中,我们可以使用以下调用将调试输出写入浏览器的控制台:
console.log("My debug output.");
Run Code Online (Sandbox Code Playgroud)
谷歌浏览器中的输出:
如何通过 Blazor WebAssembly 将组件中的“我的调试输出”记录到浏览器的控制台?
<button @onclick="ClickEvent">OK</button>
@code {
private void ClickEvent()
{
// console.log("My debug output.");
}
}
Run Code Online (Sandbox Code Playgroud) 我有两个组件。第一个组件包含模型列表,第二个组件包含模态表单我想在第一个组件中点击模型在第二个组件中,打开模态并编辑模型如何从父组件调用子组件中的显示功能
<ChildComponent />
<button onClick="@ShowModal">show modal</button>
@code{
ChildComponent child;
void ShowModal(){
child.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
我用过@using,但这段代码有错误:
找不到类型或命名空间名称 ChildComponent
我最近阅读了 .NET MAUI,但我对其与 Blazor 的用途感到困惑。
您可以使用 .NET MAUI 和 blazor 开发一个面向 Web、ios、android 和 windows 的网页吗?
例如,有效地开发网页以在任何其他设备上也作为应用程序工作,但在浏览器中以正常的 Blazor 方式工作(即使用 WASM)?
我正在关注 NDC Oslo 的示例应用程序,即以下应用程序: https: //github.com/SteveSandersonMS/presentation-2019-06-NDCOslo/tree/master/demos/MissionControl。这实现了 JWT 作为身份验证和授权。但是,当我尝试将代码的实现复制到服务器端 Blazor 时,当我尝试从本地存储中获取存储的 JWT 令牌(如下所述)时,我收到错误消息”
JavaScript interop calls cannot be issued at this time. This is because the component is being
statically rendererd. When prerendering is enabled, JavaScript interop calls can only be performed
during the OnAfterRenderAsync lifecycle method.
Run Code Online (Sandbox Code Playgroud)
这是我的 blazor 代码
protected override async Task OnInitializedAsync()
{
var token = await TokenProvider.GetTokenAsync();
Branches = await Http.GetJsonAsync<List<BranchDto>>(
"vip/api/lookup/getbranches",
new AuthenticationHeaderValue("Bearer", token));
}
Run Code Online (Sandbox Code Playgroud)
错误来自
public async Task<string> GetTokenAsync()
{
//Code Omitted for brevity …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将 Blazor 组件呈现为 HTML 字符串的方法,以便我能够将其用作模板引擎,在我的 Web 应用程序中创建和发送电子邮件。想法?
当我在 Azure 上发布 Blazor 服务器端应用程序时,Visual Studio 会提示一条消息:
您的应用程序正在使用 SignalR。对于需要扩展的环境,我们强烈建议添加对 Azure SignalR 服务的依赖。
但是,我的应用程序可以正常工作,无需使用 Azure SignalR 服务。所以我想知道整合它是否真的有意义,或者这只是微软从我们口袋里多掏几美元的一种方式......
有没有人试过在有和没有 Azure SignalR 服务的情况下部署 Blazor 服务器端应用程序,以测试在性能方面是否有任何实际差异?我应该从中获得什么样的优势?
azure asp.net-core-signalr azure-signalr blazor-server-side asp.net-blazor
我正在使用 Blazor 并创建了一个服务器托管的 Web 应用程序。我必须像这样在页面顶部放置一个授权行@attribute [Authorize] 以确保用户已登录。
似乎我必须将这一行单独添加到每个页面。是否有一个全局设置可以保护应用程序中的所有页面,当然登录页面除外。
谢谢!
语境:
我们想要创建一个在客户端与 Blazor WebAssembly 一起运行的单页应用程序。在服务器端,该解决方案有一个 ASP.NET MVC,其中包括一些用于 REST API 的 ApiController 类。
我们希望在服务器端使用 ASP.NET API 而不是 Blazor Server,因为我们希望为未知消费者提供带有 ApiController 类的 REST 接口。
这是我在单个解决方案中的客户端 (Blazor WebAssembly) 和服务器端 (ASP.NET API) 项目:
第一次尝试通过我们的组件中的 Blazor 的 HttpClient 类请求 API FetchData:
@inject HttpClient Http
...
@code {
private TodoItem[] TodoItems;
protected override async Task OnInitializedAsync()
{
TodoItems = await Http.GetJsonAsync<TodoItem[]>("api/ToDo");
}
}
Run Code Online (Sandbox Code Playgroud)
在服务器端,API-Controller 看起来像:
namespace ToDoListAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]
public class ToDoController : ControllerBase
{
[HttpGet]
public string IGetAll()
{
var lResult = …Run Code Online (Sandbox Code Playgroud) asp.net-web-api single-page-application asp.net-core blazor asp.net-blazor
我正在尝试将 MediatR 连接到客户端 Blazor 应用程序中,纯粹是为了处理组件之间的事件通知。
该事件已发布,并且由具有处理程序的单独组件拾取,但我无法从处理程序更新 UI。
我相信原因是 MediatR 调用的处理程序与 UI 组件使用的处理程序不是同一实例。如果这有道理吗?
有人在 Blazor 中使用过 MediatR 通知吗?
发布组件:
@inject MediatR.IMediator _mediator
<h3>Sender</h3>
<button @onclick="SendNotification">Send notification</button>
@code {
private void SendNotification()
{
_mediator.Publish(new MyNotification { Message = "Hello World!" });
}
}
Run Code Online (Sandbox Code Playgroud)
订阅组件:
@using MediatR;
@implements INotificationHandler<MyNotification>;
<h3>Receiver</h3>
<p>Message: @Message</p>
@code {
private string Message { get; set; } = "[No message]";
public Task Handle(MyNotification notification, System.Threading.CancellationToken cancellationToken)
{
Message = notification.Message; // <-- THIS DOES NOT UPDATE THE UI
return …Run Code Online (Sandbox Code Playgroud) mediatr blazor blazor-client-side asp.net-blazor blazor-webassembly