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

来源:https://www.cnblogs.com/chillsrc/archive/2022/09/12/16686421.html
-Advertisement-
Play Games

閱讀須知:本文為入門介紹、指引文章,所示代碼皆為最簡易(或僅為實現功能)的演示示例版本,不一定切實符合個人(企業)實際開發需求。 一、DbContext生存期 DbContext 的生存期從創建實例時開始,併在釋放實例時結束。 DbContext 實例旨在用於單個工作單元。這意味著 DbContex ...


學習ASP.NET Core Blazor編程系列一——綜述 學習ASP.NET Core Blazor編程系列二——第一個Blazor應用程式(上) 學習ASP.NET Core Blazor編程系列二——第一個Blazor應用程式(中) 學習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。

            

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、多線程概述 1.1、進程和線程的概念 1.1.1、進程 進程是執行程式的一次執行過程,是一個動態的過程,是一個活動的實體,是系統資源分配的單位 一個應用程式的運行就可以被看做是一個進程 1.1.2、線程 線程,是運行中的實際的任務執行者,一般的,一個進程中包含了多個可以同時運行的線程 線程就是獨 ...
  • JavaIO流04 4.常用的類03 4.4節點流和處理流02 4.4.5對象處理流-ObjectInputStream和ObjectOutputStream 1.序列化和反序列化 例子1: 看一個需求 將int num= 100這個int 類型的數據保存到文件中,註意不是100 數字,而是int ...
  • 傳送門: https://www.cnblogs.com/greentomlee/p/12314064.html github: Leezhen2014: https://github.com/Leezhen2014/python_deep_learning 在第二篇中介紹了用數值微分的形式計... ...
  • 今年教師節前夕,我特意用Python做了個學生點名系統,非常好用,送給各科老師、輔導員當節日禮物,老師們都喜滋滋,說平常逃課就原諒我了,我心想,這次畢業應該不是問題了~ 本文背景 根據我的調查,現在的學生大部分都很積極,會主動舉手回答問題。但是,也會遇到一些不好的情況,比如年級越高主動舉手的人越少, ...
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 ! 壁紙,有多種的類別和各種不同的風格,如: 風景、美女、唯美、動漫、花卉、節日等適合您的高清桌面壁紙 今天我們就來採集一下叭~ 環境使用: Python 3.8 解釋器 Pycharm 編輯器 需安裝python第三方模塊 : requests win + R ...
  • Web的8種(6+2)元素+定位方法 - id : id屬性 - name : name屬性 - class_name : - tag_name :標簽名 - css定位表達式: 局部html代碼 <input type="text" class="s_ipt" name="wd" id="kw" ...
  • JVM 嗶哩嗶哩 尚矽谷視頻 宋紅康老師 ==Java代碼執行流程== ==簡圖== ==詳細圖== 1、類載入子系統 ==類載入器子系統的作用== 類載入器子系統負責從文件系統或者網路中載入Class文件,class文件在文件開頭有特定的文件標識 ClassLoader 只負責 class 文件的 ...
  • 緩存穿透是用戶訪問一個不存在的key,導致請求穿透到資料庫。 問題關鍵是程式上要識別出這個key是一個錯誤key,不是由系統生成的key。每次添加或刪除緩存時維護一個key欄位查詢過濾器,例如:布隆過濾器、HashSet。這樣在訪問緩存前,可以對key先進行查詢過濾,判斷key是否存在,再往下執行業 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...