无效操作异常。无法绑定复杂类型。 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 一切都完成了。
我正在尝试将 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 一切都完成了。