Это код, взятый из класса контроллера учетных записей MVC5 (он создается как шаблон при настройке проекта asp.net) Однако, когда я передаю следующий параметр этой строке кодКласс ApplicationSignInManager вызывает недопустимое исключение литья
model.UserName = "User1", model.password = "Password1", model.RememberMe = ложь, shouldLockout = ложь
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
он бросает исключение, говоря
Невозможно передать объект типа «System.Int32» для ввода «System.String».
Что я не понимаю, почему строка кода выше считает параметр INT, когда все параметры являются строкой или логическое значение.
Кому-нибудь нужна помощь? Благодарим за продвижение.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
}
Код для LoginViewModel класса
public class LoginViewModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
Он выдает эту ошибку, потому что вы отправляете строку как параметр, но ей нужен Int32. – CodingDefined
Это не так, как я проверил тип параметра. model.UserName (строка) model.password (String), model.RememberMe (bool), shouldLockOut (bool) – Sike12
- это ваше имя пользователя, пароль в int, попробуйте сначала изменить его на строку. – CodingDefined