<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      深入淺出Blazor webassembly之異常錯誤顯示

      Blazor wasm 原生模版中沒有提供對End user友好的異常處理機制. 一般情況下我們都需要自行實現一套自己的異常處理機制

      ==============================

      原生的異常處理機制

      ==============================

      Fetch.razor 的初始化代碼, 加載一個不存在的json 文件, 導致程序異常, 未做特殊處理的情況.

          protected override async Task OnInitializedAsync()
          {
              forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/not_found.json");
          }

       

       

      ==============================

      簡單的JS alert處理機制

      ==============================

      注入 IJSRuntime 調用 js alert 函數來處理異常, 對于End user 稍微好了一些, 但還是不夠友好.

          [Inject] IJSRuntime Js { get; set; } 
          protected override async Task OnInitializedAsync()
          {
              try
              {
                  forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/not_found.json");
              }
              catch (Exception ex)
              {
                  await Js.InvokeVoidAsync("alert", ex.Message);
              }
      
          }

       

       

       

       

      ==============================

      自定義全局異常處理機制: Layout中內置一個全局的ErrorComponent

      ==============================

      1. 聲明一個 IErrorComponent 接口

      namespace WebApplication2
      {
          public interface IErrorComponent
          {
              void ShowError(string title, string message);
          }
      }

      2.  MainLayout.razor 實現 IErrorComponent接口, 并提供顯示和關閉Error

      @inherits LayoutComponentBase
      @implements IErrorComponent
      
      <div class="page">
          <div class="sidebar">
              <NavMenu />
          </div>
      
          <div class="main">
              <div class="top-row px-4">
                  <a href="http://blazor.net" target="_blank" class="ml-md-auto">About</a>
              </div>
      
              <div class="content px-4">
                  @if (_IsErrorActive)
                  {
                      <div class="alert alert-danger" role="alert">
                          <button type="button" class="close" data-dismiss="alert" aria-label="Close1" @onclick="HideError">
                              <span aria-hidden="true">&times;</span>
                          </button>  
                      </div>
                      <h3>@_Title</h3>
                      <p>@_Message</p>
                  } 
      
                  <CascadingValue Value="this" Name="ErrorComponent">
                      @Body
                 </CascadingValue>
              </div>
          </div>
      </div>
      
      @code{
          bool _IsErrorActive;
          String _Title;
          String _Message;
      
          public void ShowError(string title, string message)
          {
              this._IsErrorActive = true;
              this._Title = title;
              this._Message = message;
              StateHasChanged();
          }
      
          private void HideError()
          {
              this._IsErrorActive = false;
          }
      }

       

      改造之前, content 部分非常簡單, 代碼見下, 改造之后, 在@Body 加了顯示 error message的 alert 卡片.

              <div class="content px-4">
                  @Body
              </div>

      另外, 使用 CascadingValue 組件將 MainLayout 作為 IErrorComponent 的實例傳導到各個頁面中.

      3. FetchData.razor 文件中, 使用 CascadingParameter 承接 IErrorComponent 實例, 并在異常點使用該實例顯示出來.

          [CascadingParameter(Name = "ErrorComponent")] IErrorComponent _ErrorComponent { get; set; }
          protected override async Task OnInitializedAsync()
          {
              try
              {
                  forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/not_found.json");
              }
              catch (Exception ex)
              {
                  _ErrorComponent.ShowError(ex.Message, ex.StackTrace);
              }
      
          }

       

      效果圖:

       

       

      ==============================

      參考

      ==============================

      https://nightbaker.github.io/gitflow/azure/piplines/2020/01/22/blazor-error-component/

      https://nightbaker.github.io/blazor/exception/2021/08/11/throws-exceptions-to-blazor/

      posted @ 2021-09-30 20:02  harrychinese  閱讀(589)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费看黄色亚洲一区久久| 国产第一页浮力影院入口| 国产精品香港三级国产av| 亚洲综合色区另类av| 国产高清在线男人的天堂 | 国产丰满乱子伦无码专区| 日本福利一区二区精品| 农村老熟妇乱子伦视频| 国产精品国产三级国快看| 日韩中文字幕亚洲精品| 人人妻人人添人人爽日韩欧美| 国产11一12周岁女毛片| 欧美亚洲h在线一区二区| 极品无码国模国产在线观看| 精品乱码一区二区三四五区| 亚洲爆乳精品无码一区二区| 国产成人片无码视频在线观看 | 国产精品久久久久久妇女| 熟女在线视频一区二区三区| 91中文字幕在线一区| 亚洲中文无码av在线| 国产又色又爽又黄的网站免费| 亚洲更新最快无码视频| 久久视频这里只精品| 国产日产欧产美韩系列麻豆| 久久精品国产99久久丝袜| 一面膜上边一面膜下边视频| 亚洲高清WWW色好看美女| 新久久国产色av免费看| 久久精品国产99精品国产2021| 国内精品人妻无码久久久影院导航| 国产精品免费中文字幕| 永定县| 性色在线视频精品| 国产亚洲精品久久久久久青梅| 岛国一区二区三区高清视频| 亚洲高清日韩专区精品| 人妻综合专区第一页| 精品91在线| 人妻中文字幕精品一页| 日韩人妻无码一区二区三区久久 |