Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在视图中返回HTTP BadResponse消息?_C#_Asp.net Core_Asp.net Web Api_Web Applications_Http Post - Fatal编程技术网

C# 如何在视图中返回HTTP BadResponse消息?

C# 如何在视图中返回HTTP BadResponse消息?,c#,asp.net-core,asp.net-web-api,web-applications,http-post,C#,Asp.net Core,Asp.net Web Api,Web Applications,Http Post,将BadRequest消息从Web API返回到视图时遇到问题。API方法可以返回对象,一个简单的BadRequest,或者返回一个带有消息“无法匹配”的对象 问题是,当API方法返回BadRequest时,我不知道返回什么以及如何返回。现在,Web应用程序控制器只返回View()。我最终更改了它,但收到如下错误: [HttpPost] public ActionResult Create(GtlTitle gtlTitle) { try { HttpRespon

BadRequest
消息从Web API返回到视图时遇到问题。API方法可以返回对象,一个简单的
BadRequest
,或者返回一个带有消息“无法匹配”的对象

问题是,当API方法返回
BadRequest
时,我不知道返回什么以及如何返回。现在,Web应用程序控制器只返回
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标题controller.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
,我仍然觉得我也错过了其他代码

与此类似:

Psedo码


与此类似:

Psedo码


您需要检查HttpResponseMessage中的状态代码。我不相信
PostAsJsonAsync
不会在错误请求响应上引发异常。好吧,我明白了。但现在我的问题是,我如何才能返回我刚刚发布的内容(如果它有效的话),以及如何在它不起作用时返回
BadRequest
;不行?正如您所说,使用
PostAsJsonAsync
我无法检索到一个坏请求-那么我如何才能同时执行这两个操作呢?您需要检查HttpResponseMessage中的状态代码。我不相信
PostAsJsonAsync
不会在错误请求响应上引发异常。好吧,我明白了。但现在我的问题是,我如何才能返回我刚刚发布的内容(如果它有效的话),以及如何在它不起作用时返回
BadRequest
;不行?正如您所说,使用
PostAsJsonAsync
我无法检索一个坏请求-那么我如何能够同时执行这两个操作呢?
if (response.Status == HttpStatusCode.Ok) 
    return Redirect(...); 
else 
    return BadRequest(response.Content.ReadAsStringAsync().Result);