gpt4 book ai didi

c# - 如何从 Asp.Net Core View 组件返回错误的 HTTP 状态代码

转载 作者:太空狗 更新时间:2023-10-30 01:01:11 24 4
gpt4 key购买 nike

我正在尝试从 Asp.Net Core 中的 View 组件返回 HTTP 500 或 BadRequest() 结果,但是此返回类型似乎不适用于 View 组件。状态代码返回类型应该可用于 View 组件还是我的设计有误?

我按照下面的方式通过 ajax 调用我的 Controller 操作...

<a asp-controller="Client" asp-action="LoadVisit" asp-route-id="@item.VisitID" data-ajax="true" data-ajax-method="GET" data-ajax-update="#ClientVisit" data-ajax-mode="replace" data-ajax-failure="AjaxOnFailure(xhr, status, error)" role="button"><i class="fa fa-folder-open-o"></i></a>

我的 Controller 操作正在调用/返回我的 View 组件,如下所示...

public IActionResult LoadVisit(int? id)
{

if (id == null || id == 0)
{
return NotFound();
}

return ViewComponent("ClientVisit", new { visitID = id.GetValueOrDefault() });

}

我的 ClientVisit View 组件具有以下...

public async Task<IViewComponentResult> InvokeAsync(int? clientID, int? visitID)
{

try
{
var model = new VisitViewModel();
model = await visitAPI.GetVisit(clientID, visitID);
return View(model);
}
catch (Exception ex)
{
return Content(ex.Message);
}

}

当我的数据库调用 model = await visitAPI.GetVisit(clientID, visitID) 失败时,我想返回 return StatusCode(500, ex.ToString()) 但它是不可用,所以我的 ajax 调用认为我的请求成功,这是错误的。

最佳答案

只要您在访问中有 HttpResponse,它就应该可以工作。或者,由于 ViewComponent 先决条件检查的返回,然后设置状态。

try
{
var model = new VisitViewModel();
model = await visitAPI.GetVisit(clientID, visitID);
return View(model);
}
catch (Exception ex)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return null;
}

关于c# - 如何从 Asp.Net Core View 组件返回错误的 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40858676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com