Как проверить, действительно ли значение отправлено в теле почтового запроса? - PullRequest
0 голосов
/ 04 января 2019

Итак, я получил почтовый запрос на то, чтобы пользователь зарегистрировал все работает, но в почтовом запросе я могу пропустить, скажем, «Имя» и «Фамилия», и он все равно создаст учетную запись в моей БД, но я хочу, чтобы он выдает ошибку, когда одно из указанных значений не введено. Вот код, который у меня сейчас есть.

//Post api/Accounts/Register
    [HttpPost("Register")]
    public IActionResult Register([FromBody]User u, string name, string lastname, string birthday, string password, string gender, string streetname, string email, string housenumber, string addition, string postalcode, string city, string phonenumber)
    {
        var UserData = from user in _context.users
                       where (name == u.Name &&
                       lastname == u.LastName &&
                       birthday == u.Birthday &&
                       password == u.Password &&
                       gender == u.Gender &&
                       streetname == u.Street_Name &&
                       email == u.email &&
                       housenumber == u.House_Number &&
                       addition == u.Addition &&
                       postalcode == u.Postalcode &&
                       city == u.City &&
                       phonenumber == u.Telephone_Number)
                       select u;


        //Check for potential errors
        bool DupeMail = _context.users.Any(Dupe => Dupe.email == u.email);
        bool PhoneCheck = _context.users.Any(CheckPhone => CheckPhone.Telephone_Number == u.Telephone_Number);


        //Criteria check
        if (DupeMail)
        {
            return BadRequest("Email bestaat niet of is al in gebruik");
        }
        if (PhoneCheck)
        {
            return BadRequest("Telefoon nummer bestaat niet of is al in gebruik");
        }
        if (DupeMail == false && PhoneCheck == false)
        {
           if(ModelState.IsValid)
                    {
                        _context.users.Add(u);
                        _context.SaveChanges();
                        return Ok("Account Created");
                    } else {
                                var errors = ModelState.Select(x => x.Value.Errors)
                                    .Where(y=>y.Count>0)
                                    .ToList();
                                    return BadRequest(errors);
                            }
        }
        else
        {
            return NoContent();
        }
    }

Я пытался.

if(name == null)
   {
     return BadRequest("Please fill in everything");
   }

Но когда я это делаю, ВСЕГДА получаю послание, чтобы вернуть плохой запрос. Я поместил этот кусок кода под select u;

Также, когда я Console.WriteLine (имя); до возврата BadRequest ничего не печатается, поэтому я не могу проверить if (name == null), потому что оно всегда равно null, но как мне проверить, отправлено ли все, что было указано, или нет?

Любое понимание было бы потрясающим, я не могу понять, как проверить, не передается ли значение через мое тело: (

Ответы [ 2 ]

0 голосов
/ 04 января 2019

в .NET Framework версии 2.0, нет 'String.IsNullOrWhiteSpace'.

так что используйте это:

if (IsNullOrWhiteSpace(name)) return BadRequest("Please fill everything");

bool IsNullOrWhiteSpace(string txt)
{
    if (txt == null) return true;
    if (string.IsNullOrEmpty(txt.Trim())) return true;
    return false;
}
0 голосов
/ 04 января 2019

Возможно, что полученное вами значение будет пустым String вместо null.

Вам нужно сделать что-то вроде этого:

if (String.IsNullOrWhiteSpace(u.name)) {
    return BadRequest("Please fill everything");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...