无效操作异常。无法绑定复杂类型。 Asp.net 核心 6

InvalidOperationException. Cannot bind complex type. Asp.net core 6

我正在尝试将 ICallbackSuccess 传递给 Razor Page 的 OnGet

public async Task OnGetAsync(string phoneNumber, string? returnUrl, ISuccessCallback callback)

这是界面:

public interface ISuccessCallback
{
    Task CallAsync(AppUser user, SignInManager<AppUser> signInManager);
}

这些是实现:

public class SaveAccountChangesCallback : ISuccessCallback
{
    public async Task CallAsync(AppUser user, SignInManager<AppUser> signInManager)
    {
        await signInManager.RefreshSignInAsync(user);
    }
}
public class SignInCallback : ISuccessCallback
{
    public async Task CallAsync(AppUser user, SignInManager<AppUser> signInManager)
    {
        var result = await signInManager.UserManager.CreateAsync(user);
        if (!result.Succeeded)
        {
            var error = "";
            var errors = result.Errors.ToList();
            for (var i = 0; i < errors.Count; i++)
            {
                error += $"{i + 1}: {errors[i].Description}\n";
            }

            throw new Exception($"Can't create new user: \n{error}");
        }

        await signInManager.SignInAsync(user, false);
    }
}

这些是呼叫站点:

return RedirectToPage("VerifyCode", new
{
    phoneNumber = Input.PhoneNumber,
    returnUrl = ReturnUrl,
    callback = new SignInCallback()
});
return RedirectToPage("../VerifyCode", new
{
    phoneNumber = Input.PhoneNumber,
    returnUrl = HttpContext.Request.GetEncodedUrl(),
    callback = new SaveAccountChangesCallback()
});

错误信息全文:

InvalidOperationException: Could not create an instance of type 'Web.Areas.Identity.Pages.Account.Logic.VerifyCode.ISuccessCallback'. Model bound complex types must not be abstract or value types and must have a parameterless constructor. Record types must have a single primary constructor. Alternatively, give the 'callback' parameter a non-null default value.

我已经记住了 属性 中 callback 的值,它的声明是有问题的:

[BindProperty] public ISuccessCallback Callback { get; private set; }。 需要删除 private for set 一切都完成了。