在ASP.NET Blazor中,事件處理與傳統的ASP.NET Web Forms和MVC非常相似。要在Blazor組件中處理事件,你需要定義一個事件處理程序方法,并在模板中將該方法與事件關聯起來。以下是一個簡單的示例,說明如何在Blazor組件中處理事件:
MyComponent.razor
):@page "/mycomponent"
@if (isClicked)
{
<h3>你好,歡迎使用Blazor!</h3>
}
else
{
<button @onclick="HandleClick">點擊我</button>
}
<script>
export default {
data() {
return {
isClicked: false
};
},
methods: {
HandleClick()
{
this.isClicked = true;
}
}
};
</script>
在這個示例中,我們定義了一個名為HandleClick
的事件處理程序方法。當用戶點擊按鈕時,這個方法將被調用。我們還將isClicked
數據屬性設置為true
,以便在頁面上顯示一條消息。
MyComponent.razor.cs
文件中,我們可以將事件處理程序方法與事件關聯起來:using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Rendering;
namespace MyNamespace
{
public class MyComponent : ComponentBase
{
private bool isClicked = false;
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
base.BuildRenderTree(builder);
builder.AddContent(0, isClicked
? (RenderFragment)builder.CreateHtmlContent("<h3>你好,歡迎使用Blazor!</h3>")
: (RenderFragment)builder.CreateElement("button", new Dictionary<string, object> { {"@onclick", EventCallback.Factory.Create<MouseEventArgs>(this, OnClick)} }, new Dictionary<string, object> { {"class", "btn btn-primary"} } }, "點擊我"));
}
private void OnClick(MouseEventArgs e)
{
isClicked = true;
}
}
}
在這個示例中,我們使用BuildRenderTree
方法將事件處理程序方法與按鈕的onclick
事件關聯起來。我們還為按鈕添加了一個class
屬性,以便應用一些樣式。
現在,當用戶點擊按鈕時,HandleClick
方法將被調用,頁面將顯示一條歡迎消息。這就是在ASP.NET Blazor中處理事件的基本方法。你可以根據需要擴展此示例,以處理其他類型的事件和自定義組件。