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);