首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理承载该异常的组件/页中的Blazor子组件中引发的异常?

如何处理承载该异常的组件/页中的Blazor子组件中引发的异常?
EN

Stack Overflow用户
提问于 2020-12-19 17:23:23
回答 1查看 542关注 0票数 1

在承载该异常的组件/页面中的Blazor子组件中抛出异常是如何处理的?

场景

我正在构建一个Blazor组件,它负责验证登录凭据(用户名和密码)。它使用身份验证服务进行验证。如果凭据无效,则服务引发InvalidLoginCredentialsException。我使用的是“代码隐藏”方法,C#看起来像这样.

代码语言:javascript
复制
public class LoginFormBase : PageBase
{
    // Properties
    //
    public String Username { get; set; } = String.Empty;

    public String Password { get; set; } = String.Empty;


    // EventCallback to communicate the result to the parent component
    //
    [Parameter]
    public EventCallback<SingleSignOn> OnLogin { get; set; }
    
    // Event handler
    //
    protected void btnLogin_OnClick()
    {
        var user = this.SignOnService.Login(this.Username, this.Password); <!-- throws InvalidLoginCredentialsException
        OnLogin.InvokeAsync(user);
    }
}

我有一个剃须刀组件/页面,它实现了LoginForm组件。UI代码看起来像..。

代码语言:javascript
复制
@page "/login";
@inherits LoginBase
@using ThriftShopTracker.Components;


<div class="container">
    
    <h1 class="display-8 mt-3 mb-2">Login</h1>
    
    <LoginForm OnLogin="@LoginForm_OnLogin"></LoginForm>

</div>

后面的“密码”看起来就像..。

代码语言:javascript
复制
 public class LoginBase : PageBase
 {        
      protected void LoginForm_OnLogin(SingleSignOn user)
      {
          this.CurrentUser = user;
          // 
          // I WANT TO HANDLE THE EXCEPTION HERE
          //
      }
  }

因此,问题在于,当我输入错误的凭据时,异常将按预期抛出,但我希望在LoginBase代码中处理它。我想尝试/捕获异常,以便能够处理它,但是由于LoginForm_OnLogin()在LoginForm组件中被“调用”,所以LoginBase代码中没有什么可捕捉的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-19 17:50:40

LoginForm启动调用堆栈。它不是由父窗体发起的,因此错误不会抛回父窗体。

您应该捕获LoginForm中的错误,然后使用另一个事件将错误的详细信息通知父窗体。

例如添加另一个事件OnLoginFailure(errorInfo)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65372521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档