Как вернуть сообщение HTTP BadResponse в представлении? - PullRequest
0 голосов
/ 27 мая 2020

У меня проблемы с возвратом сообщения BadRequest из моего веб-API в мое представление. Метод API может возвращать объект, простой BadRequest или объект с сообщением «Не удалось сопоставить» .

Проблема в том, что я не знаю, что и как вернуть, когда метод API возвращает BadRequest. На данный момент контроллер веб-приложений возвращает только View(). В конце концов я изменил его, но получаю сообщение об ошибке, как показано ниже:

[HttpPost]
public ActionResult Create(GtlTitle gtlTitle)
{
    try
    {
        HttpResponseMessage response = GlobalVariables_Title.client.PostAsJsonAsync("", gtlTitle).Result;
        TempData["Success"] = "Added Successfully!";
        return RedirectToAction("Index");
    }
    catch
    {
        return HttpStatusCodeResult(HttpStatusCode.BadRequest, "naughty");
    }
}

Имя HttpStatusCodeResult не существует в текущем контексте

Ниже мой WEB API TitleController.cs

        [Route("api/title")]
    [HttpPost()]
    public IActionResult InsertTitle([FromBody] GtlTitle gtlTitle)
    {
        // if (_titleChecker.CheckTitle(gtlTitle.ISBN) is false)
        //{
        string pattern = "[0-9]*[-| ][0-9]*[-| ][0-9]*[-| ][0-9]*";
        Match m = Regex.Match(gtlTitle.ISBN, pattern, RegexOptions.IgnoreCase);
        if (m.Success)
        {
            if (_titleChecker.CheckTitle(gtlTitle.ISBN) is false)
            {
                try
                {
                    return Ok(_gtlTitleRepository.InsertTitle(gtlTitle));
                }
                catch (Exception e)
                {
                    return BadRequest();
                }
            }
            else
            {
                try
                {
                    return Ok(_volumesDBContext.InsertVolume_FromTitle(gtlTitle, gtlTitle.ISBN));
                }
                catch (Exception e)
                {
                    return BadRequest();
                }
            }
        }
        else
            return BadRequest("Could not match");
        // }
        // else
        //return Ok(_volumesDBContext.InsertVolume_FromTitle(gtlTitle, gtlTitle.ISBN));
    }

Следовательно, что я должен вернуть в моем методе HttpPost? Несмотря на HttpStatusCodeResult, я все еще чувствую, что упускаю и другой код.

1 Ответ

2 голосов
/ 27 мая 2020

Что-то в этой строке:

Psedo code

if (response.Status == HttpStatusCode.Ok) 
    return Redirect(...); 
else 
    return BadRequest(response.Content.ReadAsStringAsync().Result);
...