提问人:Gautzilla 提问时间:11/16/2023 最后编辑:Gautzilla 更新时间:11/19/2023 访问量:73
Blazor 教程:@onclick事件在新的 Razor 组件中不起作用
Blazor tutorial: @onclick event doesn't work in new razor components
问:
我是 Blazor 的新手,我正在遵循 blazor-workshop 教程。
我使用的是 .NET 版本 8.0.100
我使用计数器组件创建了示例项目,并对其进行了一些操作,并且我测试的所有内容都正常工作(例如,由于for循环,显示与计数器值相对应的表情符号,诸如此类基本的东西)。
我进入了下一步,练习如何构建待办事项列表。
我按照指南一步一步地操作,拥有完全相同的代码(步骤4),但是单击“添加待办事项”按钮不会执行任何操作。
我的组件:Todo.razor
@page "/todo"
<h3>Todo</h3>
<ul>
@foreach(var todo in todos)
{
<li>@todo.Title</li>
}
</ul>
<input placeholder="Something to do" @bind="newTodo" />
<button @onclick="AddTodo">Add</button>
@code {
private List<TodoItem> todos = new();
private string? newTodo;
private void AddTodo()
{
if (!string.IsNullOrWhiteSpace(newTodo))
{
todos.Add(new TodoItem{Title = newTodo});
newTodo = string.Empty;
}
}
}
我尝试在 VS Code 中调试它:我在“AddTodo()”方法的开头添加了一个断点,结果发现当我单击按钮时没有到达该方法。
我尝试将“Counter.razor”组件的内容(在创建新的 blazor 项目时创建)替换为“Todo.razor”组件的内容,这里一切正常:当我单击按钮时,项目会添加到列表中。
有谁知道我在这里做错了什么?
谢谢!!
编辑:我缺少组件顶部的那一行。这就解决了问题!但我不认为将 H H 的答案标记为正确的绿色标记。@rendermode InteractiveServer
答:
1赞
RBee
11/16/2023
#1
从 .NET 8 开始,他们引入了渲染模式 MS 文档
这是一项需要学习并主动合并到交互式组件的 .NET 8 Blazor 项目中的功能。
为了在组件中启用交互性,每个组件都需要在本地或全局声明。@rendermode
但是,如果您想遵循该教程,我建议您使用其设计的版本进行学习。下面介绍如何使用 CLI 创建 .NET 版本为 <= 7 的 Blazor 应用。
//server side Blazor
dotnet new blazorserver -f net7.0 -o BlazorApp
//client side Blazor
dotnet new blazorwasm -f net7.0 -o BlazorApp
评论
1赞
kah608
11/19/2023
仅供参考,对于那些遇到这种情况并使用 net8 的人 - 如果您将@rendermode添加到您的 Todo.razor 中,这也将修复它。@page “/todo” @rendermode InteractiveServer'
评论
dotnet new blazor -o BlazorApp
Todo.razor