[Blazor][筆記][EventCallback]透過 EventCallBack 從子元件傳資料給母元件範例

透過 EventCallBack 子元件回傳資料給母元件(頁面)範例

緣起

Blazor可以讓元件變成一個小部份放到另一個頁面或元件中,那麼元件間的資料傳遞就會是很常見的狀況。這一篇用一個簡單的方式來示範如何透過 EventCallBack 來傳遞資料。

子元件

透過屬性,宣告為 EventCallback 來傳遞,相關的範例程式碼如下:

<h3>Calendar</h3>

<input type="text" @bind="txtDate" />
<button @onclick="returnData">傳回</button>

@code {

    private string txtDate = DateTime.Now.ToString("yyyy/MM/dd");

    [Parameter]
    public EventCallback<string> OnReturnDate { get; set; }


    private async void returnData()
    {
        await OnReturnDate.InvokeAsync(txtDate);
    }
}

主要是透過 Parameter 的 InvokeAsync 回傳那一段

 

使用的母元件(頁面)

畫面的部分:

日期:<input type="text" @bind="rtnDate" />
   <button @onclick="CalenderShow">顯示Calendar</button>

@if (showCalendar)
{
    <Calendar OnReturnDate="returnData"></Calendar>
}

C# 程式碼的部分:

    private string rtnDate = "";
    private bool showCalendar = false;

    private void CalenderShow()
    {
        showCalendar = true;
    }

    
    protected void returnData(string returnDate)
    {
        rtnDate = returnDate;
        showCalendar = false;
    }

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat