學習ASP.NET Core Blazor編程系列二十三——登錄(2) 學習ASP.NET Core Blazor編程系列二——第一個Blazor應用程序(上)

 

         通過查詢微軟官網上的文檔,我們知道目前Blazor沒有內置的密碼輸入組件,這個用於輸入密碼的組件需要我們來自己實現。接下來我們就來實現密碼輸入組件功能。

三、自制密碼輸入組件

     1. 在Visual Studio 2022的解決方案資源管理器中,鼠標左鍵選中“Pages”文件夾,右鍵單擊,在彈出菜單中選擇“添加—>Razor組件…”,並將組件命名爲“InputPassword”。如下圖。

     2. 這個密碼輸入組件需要繼承IputBase<T>,並且重寫TryParseValueFromString這個方法。這個方法的作用是將用戶在表單輸入框中輸入數據轉換成你需要的T類型,例如T是DateTime的話,就要把表單輸入框中輸入的數據轉換成DateTime。

      TryParseValueFromString方法有三個參數,對這三個參數說明如下:

  • value:表單輸入框中填寫的值
  • result:類型是TValue,和InputBase<T>中設定的T一致,result值會綁定到表單中Model的對應欄位上
  • validationErrorMessage:輸入框中輸入的數據在進行與類型T轉換時,轉換失幾的給出的錯誤信息

      3.因爲登錄界面中表單的輸入框接收的都是string類型的數據,而且我們的UserInfo類中的Password也是string,所以不需要我們做任何轉換操作,直接將value值賦給result就可以了。具體代碼如下:

@inherits InputBase<string>

<input type="password" class="@CssClass" @bind-value="@CurrentValue" />

@code { 

    protected override bool TryParseValueFromString(string value, out string result, out string validationErrorMessage)
    {
        validationErrorMessage = null;
        result = value;
        return true;
    }
} 

四、Login頁面

        1. 在Visual Studio 2022的解決方案資源管理器中,鼠標左鍵選中“Pages”文件夾,右鍵單擊,在彈出菜單中選擇“添加—>Razor組件…”,並將組件命名爲“Login.razor”。

     2.在Visual Studio 2022的文本編輯器中打開Login.razor,我們使用內建的表單組件EditForm來製作登錄界面。具體代碼如下:

@page "/Login"
@using BlazorAppDemo.Models
@using BlazorAppDemo.Utils
 
<div class="card">
    <div class="card-body my-2">
        <h3>Login</h3>
        <hr />
        <EditForm  Model="loginModel" OnValidSubmit="SubmitHandler" OnInvalidSubmit="InvalidHandler">
            <DataAnnotationsValidator />
           
            <div class="form-group">
                <label for="userName">  @HtmlHelper.GetDisplayName(loginModel ,m=> m.UserName)</label>
                <InputText @bind-Value="loginModel.UserName" class="form-control" id="userName" />
                <ValidationMessage For="()=>loginModel.UserName" />
            </div>
            <div class="form-group">
                <label for="pwd"> @HtmlHelper.GetDisplayName(loginModel ,m=> m.Password)</label>
                <InputPassword @bind-Value="loginModel.Password" class="form-control" id="pwd" />
                <ValidationMessage For="()=>loginModel.Password" />
            </div>
            <span class="form-control-plaintext"></span>
            <div class="form-group row">
                <div class="col-sm-10">
            <button class="btn btn-primary">登錄</button>
                </div>
            </div>
        </EditForm>
    </div>
</div>


@code {
    private UserInfo loginModel = new UserInfo();

    private void SubmitHandler()
    {
        Console.WriteLine($"用戶名:{loginModel.UserName} ,密碼:{loginModel.Password}");
    }

 
    private void InvalidHandler()
    {
        Console.WriteLine($"用戶名: {loginModel.UserName} ,密碼:{loginModel.Password}");

    }
}

      3.在Visual Studio 2022的菜單欄上,找到“調試-->開始調試”或是按F5鍵,Visual Studio 2022會生成BlazorAppDemo應用程序,並在瀏覽器中打開Home頁面,我們使用鼠標點擊左邊的菜單欄上的“登錄”菜單項,頁面會進入“Login”頁面,如下圖。

      4.我們使用鼠標左鍵,直接點擊“登錄”按鈕,頁面會提示我們必須輸入用戶名與密碼。如下圖。

 

5.當我們輸入的用戶名與密碼,不符合校驗規則時,頁面會提示我們必須輸入符合校驗規則的用戶名與密碼。如下圖。

 

     6.最終我們輸入了符合校驗規則的用戶名與密碼。如下圖。

 

7. 在輸入了正確的用戶名與密碼之後,使用鼠標左鍵點擊“登錄”按鈕。系統後臺獲取了我們在表單輸入框中輸入的用戶名與密碼。如下圖。

 

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章