How would one successfully return a BadRequest with an MVC Model?

Обновить

April 2019

Просмотры

25 раз

0

Моя цель состоит в том, чтобы создать плохой ответ на запрос, который проходит объект с ним. Причина этого заключается в том, чтобы создать последовательность моих возвращаемых типов. Я попытался сериализации как JSON сериализации, но ответ не был таким же, как отправка объекта.

Так что, если есть способ вообще, что это может быть отправлено, это было бы здорово знать. Кроме того, я знаю, что есть способ сделать это в ядре .NET, но я предпочел бы использовать только .Net, как у меня есть больше возможностей, и я работаю с другими проектами, которые полагаются на это.


    // POST: api/postLogin
    [AllowAnonymous]
    [System.Web.Http.HttpPost, System.Web.Http.Route("postlogin")]
    public async Task<IHttpActionResult> PostLogin(LoginDTO login)
    {    
       OutputDTO<LoginDTO> output = new OutputDTO<LoginDTO>();

       LoginDTO loginDTO = null;
       try
       { 
          if (!ModelState.IsValid)
          {
             output.Success = false;
             output.SetValidations(ModelState);
             output.ErrorMessage = "Invalid Model";                   
             return BadRequest(output);
          }
          login newLogin = new login();

          string encryptedPassword = Crypto.ApplyPasswordObfuscation(login.Password, true);
          login loginUser = await _context.login.SingleOrDefaultAsync(m =>
                          m.name == login.Username && m.password == encryptedPassword);

          if (loginUser == null)
          {
             output.Success = false;
             output.ErrorMessage = "Invalid login credentials";
             var json = new JavaScriptSerializer().Serialize(output);
             return BadRequest(json); // Not 401, since you don't want to return to the login page. Client will be already on login page
          }
          else
          {
             loginDTO = new LoginDTO(loginUser);
             output.Success = true;
             output.Results = new List<LoginDTO>
             {
                loginDTO
             };
             return Ok(output);
          }                
       }
       catch (Exception e)
       {
          output.Success = false;                
          output.ErrorMessage = "Login " + e;                
          return BadRequest(output);
       }            
    }

0 ответы