學習ASP.NET Core Blazor程式設計系列二——第一個Blazor應用程式(完)

2022-09-12 18:01:48
學習ASP.NET Core Blazor程式設計系列二——第一個Blazor應用程式(下)
 

六 計數器頁面       

 14. 在瀏覽器中,通過滑鼠左鍵單擊左邊選單欄中的「Counter」選單,頁面進入到計數器頁面。如下圖。       

圖2-17

 15.在瀏覽器的計數器頁面中,使用滑鼠左鍵單擊「Click me」按鈕,頁面中的「Current count:」從0,變為了1,在沒有重新整理頁面的情況下增加了1。在以往的Web應用程式中,我們要實現不重新整理頁面實現計數器功能,通常是通過編寫JavaScript來實現,但是在Blazor中可以使用C#來編寫這個功能。

圖2-18

      16. 在Visual Studio 2022的解決方案資源管理器中,找到Pages\Counter.razor檔案,使用滑鼠雙擊在文字編輯器中開啟此檔案。程式碼如下。

@page "/counter"

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {

    private int currentCount = 0;

     private void IncrementCount()
    {
        currentCount++;
    }
}
上面的程式碼中第一行是@page指令,這個指令在Blazor中是指定Razor元件直接處理請求的路由。瀏覽器的請求會通過這個@page指令設定的路由來處理請求。

 <PageTitle> 設定頁面的標題。

@code指令是在Razor元件中新增C#(欄位、屬性和方法)程式碼,實現相應功能。例如上面的Razor元件中用@currentCount表示當前計數的數量,@code程式碼塊中定義了currentCount 這個整數數量作為計數用。「Click me」按鈕的onclick事件觸發之後呼叫IncrementCount方法,該方法也可在@code程式碼塊中找到。

17. 實際上每一個.razor檔案都是一個可以重用的Razor UI元件。在Visual Studio 2022的解決方案資源管理器中,Pages\Index.razor檔案,使用滑鼠雙擊此檔案,在文字編輯器中開啟。

18.在Index.razor檔案的末尾新增<Counter/>元素,此元素表示將計數器元件新增到Index.razor頁面。程式碼如下,注意紅色粗體部分。

@page "/"

<PageTitle>Index</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
測試熱過載功能 。
<Counter></Counter>
19.儲存檔案之後,我們回到瀏覽器中,使用滑鼠左鍵單擊左邊選單欄中的「Home」選單,頁面進入首頁,頁面上並沒有顯示「計數器」元件。我們不停的按F5重新整理瀏覽器,同樣無法看到「計數器」元件。如下圖。

圖2-19

20.在Visual Studio 2022的工具列上,點選「熱載入」按鈕。然後回到瀏覽器中,我們發現「計數器」元件已經顯示在頁面中了。如下圖中的紅框所示。

 

圖2-20

21.在瀏覽器的首頁中,使用滑鼠左鍵單擊「Click me」按鈕,頁面中的「Current count:」從0,變為了1;再次點選「Click me」按鈕,頁面中的「Current count:」從1,變為了2。這個計數變化的過程中沒有重新整理頁面。

 

圖2-21

22. Razor元件引數可以使用屬性或子內容來設定,方便設定Razor元件的引數。例如,我們要在「計數器」元件上定義一個引數,用於設定每次單擊按鈕時計數器元件增加值。通過以下二步來實現

第一,在@code程式碼塊中新增一個公共屬性IncrementAmount,並在這個屬性上方新增[Parameter]特性。

第二,更改計數器的遞增方法currentCount,在每次遞增currentCount值時使用IncrementAmount。

具體程式碼如下所示:

@page "/counter" 

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {

    private int currentCount = 0;

    [Parameter]
    publicint IncrementAmount { get; set; } = 1;

    privatevoid IncrementCount()
    {
        currentCount += IncrementAmount;
    }
} 

23. 在Visual Studio 2022的解決方案資源管理器中,找到Pages\Index.razor檔案,使用滑鼠雙擊此檔案,在文字編輯器中開啟。在Index.razor檔案的<Counter/>元素處,新增IncrementAmount屬性,並將該屬性值更改5。程式碼如下,注意粗體部分。

@page "/"

<PageTitle>Index</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />

測試熱過載功能 。

<CounterIncrementAmount="5"></Counter>

24.在Visual Studio 2022的工具列上,點選「熱載入」按鈕。然後回到瀏覽器中,此時瀏覽器中正呈現的是剛才我們瀏覽的首頁,使用滑鼠左鍵單擊「Click me」按鈕,頁面中的「Current count:」從2,變為了7,如下圖所示;再次點選「Click me」按鈕,頁面中的「Current count:」從7,變為了12。

 

圖2-22

25.在瀏覽器中,通過滑鼠左鍵單擊左邊選單欄中的「Counter」選單,頁面進入到計數器頁面。在瀏覽器的計數器頁面中,使用滑鼠左鍵單擊「Click me」按鈕,頁面中的「Current count:」從0,變為了1,而不是5。