6 / 6 / 1
Регистрация: 13.01.2015
Сообщений: 84
1

Asp.net core ArgumentNullException: Value cannot be null

25.02.2018, 22:25. Показов 1831. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кратко. При попытке регистрации отсылает Internal server error
Кликните здесь для просмотра всего текста
An unhandled exception occurred while processing the request.
ArgumentNullException: Value cannot be null.
Parameter name: password
Microsoft.AspNetCore.Identity.UserManager+<CreateAsync>d__78.MoveNext()

А конкретнее на строке
Кликните здесь для просмотра всего текста
C#
1
var result = await _userManager.CreateAsync(user, model.Password);


Вот представление:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@{
    ViewData["Title"] = "Register";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@model Geometrica.Models.Account.AccountRegisterViewModel
<h2>Регистрация нового пользователя</h2>
<form method="post" asp-controller="UserAccount" asp-action="Register">
    <div asp-validation-summary="ModelOnly"></div>
    <div>
        <label asp-for="Email">Email</label><br />
        <input asp-for="Email" />
        <span asp-validation-for="Email"></span>
    </div>
    <div>
        <label asp-for="Password">Пароль</label><br />
        <input asp-for="Password"/>
        <span asp-validation-for="Password"></span>
    </div>
   
    <div>
        <input type="submit" value="Регистрация" />
    </div>
</form>


Вот контроллер (код может быть вам знаком ):
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Geometrica.Models;
using Microsoft.AspNetCore.Identity;
 
namespace CustomIdentityApp.Controllers
{
    public class AccountController : Controller
    {
        private readonly UserManager<User> _userManager;
        private readonly SignInManager<User> _signInManager;
 
        public AccountController(UserManager<User> userManager, SignInManager<User> signInManager)
        {
            _userManager = userManager;
            _signInManager = signInManager;
        }
        [HttpGet]
        public IActionResult Register()
        {
            return View();
        }
        [HttpPost]
        public async Task<IActionResult> Register(Geometrica.Models.Account.AccountRegisterViewModel model)
        {
            //if (ModelState.IsValid)
            {
                User user = new User { Email = model.Email, UserName = model.Email };
                // добавляем пользователя
                var result = await _userManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    // установка куки
                    await _signInManager.SignInAsync(user, false);
                    return RedirectToAction("Home", "Index");
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            return View(model);
        }
    }
}

Вот модель регистрации (user наследуется от базового Identity user):
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.ComponentModel.DataAnnotations;
 
namespace Geometrica.Models.Account
{
    public class AccountRegisterViewModel
    {
        [Required]
        [Display(Name = "Email")]
        public string Email { get; set; }
 
        [Required]
        [Display(Name = "Пароль")]
        [DataType(DataType.Password)]
        public string Password { get; set; }
 
        [Required]
        [Display(Name = "Подтверждение Пароля")]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Пароли не совпадают")]
        public string PasswordConfirm { get; set; }
    }
}


Да и вообще странно немного, поле password не закрывается звездочками например. И если раскоментить Model.IsValid то всегда будет отсылать простую модель без ошибок.Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2018, 22:25
Ответы с готовыми решениями:

ASP.NET .NET Core Web Api -- почему параметры всегда null?
Что я делаю не так? using Microsoft.AspNetCore.Mvc; namespace WebApiServer.Controllers { ...

ASP.NET Core. Старт - что нужно знать, чтобы стать ASP.NET Core разработчиком?
Попалось хор краткое обзорное видео 2016 года с таким названием - Что нужно знать, чтобы стать...

Разница между ASP.NET Core 2, ASP.NET Core MVC, ASP.NET MVC 5 и ASP.NET WEBAPI 2
Здравствуйте. Я в бекенд разработке полный ноль. В чем разница между вышеперечисленными...

Какая разница между ASP .Net Core и ASP .Net Core MVC?
Какая разница между ASP .Net Core и ASP .Net Core MVC? Или я может что-то не так понял? И...

4
2734 / 2041 / 379
Регистрация: 22.07.2011
Сообщений: 7,731
26.02.2018, 01:50 2
asp-controller="UserAccount"
public class AccountController
0
6 / 6 / 1
Регистрация: 13.01.2015
Сообщений: 84
26.02.2018, 21:17  [ТС] 3
я конечно слепой, но все равно не работает(

Добавлено через 51 минуту
Ладно, у меня получилось починить (я так рад ^^)

Для будущих посетителей:
1)Я переписал все через Tag хелперы и получил такое представление:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@{
    ViewData["Title"] = "Register";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@model Geometrica.Models.Account.AccountRegisterViewModel
<h2>Регистрация нового пользователя</h2>
@using (Html.BeginForm("Register","Account",FormMethod.Post))
{
    <div>
        @Html.LabelFor(model => model.Email)<br />
        @Html.TextBoxFor(model => model.Email)
        <span asp-validation-for="Email"></span>
    </div>
    <div>
        @Html.LabelFor(model => model.Password)<br />
        @Html.PasswordFor(model => model.Password)
        <span asp-validation-for="Password"></span>
    </div>
    <div>
        @Html.LabelFor(model => model.PasswordConfirm)<br />
        @Html.PasswordFor(model => model.PasswordConfirm)
        <span asp-validation-for="PasswordConfirm"></span>
    </div>
    <p><input type="submit" value="Регистрация" /></p>
}
2)а вот span-ы для ошибок валидации так и не работают(

Добавлено через 21 минуту
Теперь работают. Для ошибок валидации тоже существуют теги) надо span-ы заменить на:
C#
1
@Html.ValidationMessageFor(model => model.Email)
например

И все работает) Думаю можно закрыть тему

Вывод: Лучше использовать тег-хелперы
0
2734 / 2041 / 379
Регистрация: 22.07.2011
Сообщений: 7,731
27.02.2018, 11:44 4
Вы как раз переписали все на html хелперы , а таг хелперы - это атрибуты asp-*.
И вообще странно , таг хелперы либо работают , либо нет , если работают то нет никакого смысла переписывать на @Html.*


Вывод: Лучше использовать html-хелперы
Вывод неверный , косяки где то в проекте. , с причинами Вы так и не разобрались.

П.С При использовании tag хелперов стоит учитывать, что в представлении также долнжы быть подключены следующие скрипты:
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
1
6 / 6 / 1
Регистрация: 13.01.2015
Сообщений: 84
28.02.2018, 00:15  [ТС] 5
Как странно это не звучало, но атрибуты asp-* просто не работали. Выяснено было методом тыка.

Где эти скрипты найти то? Везде говорят что все в asp.net core 2.x из коробки должно работать.

P.s. Теперь не работает
C#
1
 await _signInManager.SignOutAsync();
, не удаляет куки,
хотя
C#
1
_signInManager.PasswordSignInAsync(...);
работает нормально. Куки просто брутом удалять или как?
0
28.02.2018, 00:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2018, 00:15
Помогаю со студенческими работами здесь

Стоит ли учить asp.net, если скоро станет asp.net core?
Всем привет Если я правильно понимаю, лучше учить Core ?

ASP.NET Core: разный формат даты контроллера ASP.NET и AngularJS
Собственно, проблему пока еще не разруливал, но уже погуглил. Разный формат даты который использует...

Что выбрать ASP.NET или ASP.NET Core ?
Добрый день форумчане, хотелось бы услышать ваше мнение, какой из перечисленных фреймворков лучше...

ASP.NET MVC или ASP.NET Core
Добрый вечер, подскажите что лучшие изучать ASP.NET MVC или ASP.NET Core ? Как я понимаю ASP.NET...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru