Blazor:在不点击按钮的情况下调用一个方法



我正在学习Razor。我在Budget.razor中有一个非常简单的Razor组件(使用MudBrazor框架(

@page "/budget"
<PageTitle>Budget</PageTitle>
<MudGrid>
<MudItem xs="12" sm="6" md="4">
<p> Hello you @HelloConsole() </p>
</MudItem>
</MudGrid>

Budget.razor.cs:中的一个偏类

namespace MyProject.Pages
{
public partial class Budget
{
protected void HelloConsole()
{
Console.WriteLine("Hello");
}
}
}

我在Visual studio中收到错误:

Cannot implicitly convert type 'void' to 'object'

我做错了什么?

<p> Hello you @HelloConsole() </p>

说把方法HelloConsole()的输出放在这里。但是HelloConsole返回了一个void,这正是错误所说的,渲染器无法处理。

这项工作:

protected string HelloConsole()
{
Console.WriteLine("Hello");
return "I just wrote to the console";
}

要回答的附加项:

加载组件时执行一些代码:

protected override void OnInitialized()
{
Console.WriteLine("Hello");
}
// or
protected override Task OnInitializedAsync()
{
Console.WriteLine("Hello");
return Task.CompletedTask;
}

您需要作为匿名lambda执行,否则它将返回字符串/对象:

这应该有效:

@page "/budget"
<PageTitle>Budget</PageTitle>
<MudGrid>
<MudItem xs="12" sm="6" md="4">
<p> Hello you @(() => HelloConsole()) </p>
</MudItem>
</MudGrid>
protected void HelloConsole()
{
Console.WriteLine("Hello");
}

您正在向控制台进行写入。Blazor标记需要一个对象(因为它基本上呈现一组字符串(。更改代码以返回"0";你好;。这会奏效的。

相关内容

  • 没有找到相关文章

最新更新