我正在尝试从 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/