Как решить Ошибка CS1525 Недопустимый термин выражения '='? - PullRequest
0 голосов
/ 24 января 2020

Это код метода post в классе регистров:

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
       returnUrl ??= Url.Content("~/Account/feeds");
        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
        if (ModelState.IsValid)
        {

            var user = new ApplicationUser { 
                UserName = Input.username,
                Email = Input.Email,
                DateOfBirth = Input.DOB,
                Gender = Input.Gender
            };
            //this one too

            //notice ma3aml dbcontext.add(user) batteekh w 3amal save..
            var result = await _userManager.CreateAsync(user, Input.Password);
            if (result.Succeeded)
            {
                _logger.LogInformation("User created a new account with password.");

                /*var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var callbackUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new { area = "Identity", userId = user.Id, code = code },
                    protocol: Request.Scheme);

                await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                    $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");*/

                if (_userManager.Options.SignIn.RequireConfirmedAccount)
                {
                    return RedirectToPage("RegisterConfirmation", new { email = Input.Email });
                }
                else
                {
                    await _signInManager.SignInAsync(user, isPersistent: false);
                    return LocalRedirect(returnUrl);
                }
            }
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }
        }

         //If we got this far, something failed, redisplay form
        return Page();
    }

Ошибка "Недопустимый термин выражения '='", и он указывает на строку возврата ?? = Url.Content ( "~ / счет / каналы"); Как я могу решить эту ошибку, зная, что этот класс является элементом лесов?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Оператор присвоения нулевого слияния (??=) - это функция, представленная в C# 8. Похоже, что ваш проект может неправильно ориентироваться на эту версию языка или, возможно, не может быть нацелен на нее.

Вы можете получить то, что по существу эквивалентно функциональности тому, что этот оператор делает довольно легко, хотя это немного более многословно.

returnUrl = returnUrl ?? Url.Content("~/Account/feeds");

Вы также можете просто проверить, является ли значение нулевым, и затем присвоить ему .

if(returnUrl == null)
    returnUrl = Url.Content("~/Account/feeds");
0 голосов
/ 24 января 2020

?? = является оператором объединения нулей . Это синтаксис сахара. Он был добавлен с C# 7.3 и улучшен с 8.0.

Обратите внимание, что версия C# является полностью компилятором. Это не имеет ничего общего с Target Framework. Тем не менее, Backend Framework имеет значение, в том смысле, что реальные компиляторы командной строки, к которым относится удаленное взаимодействие VS, могут еще не поддерживать новый диалект C#:

https://www.c-sharpcorner.com/article/which-version-of-c-sharp-am-i-using-in-visual-studio-2019/

...