繁体   English   中英

一个人如何成功返回带有MVC模型的BadRequest?

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

我的目的是创建一个错误的请求响应,并将其传递给对象。 原因是要与我的返回类型保持一致。 我曾尝试将序列化为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);
       }            
    }

您应该能够返回“内容”并指定状态码和对象。
例如

return this.Content(HttpStatusCode.BadRequest, output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM