我想从Asp.Net核心中的View Component返回一个HTTP 500或BadRequest()结果,但是这种返回类型似乎不可用查看组件。如果状态代码返回类型可用于View组件,或者让我的设计出错?如何从Asp.Net核心查看组件返回错误的HTTP状态代码
我打电话通过ajax我控制器操作按如下......
<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>
我的控制器动作调用/返回我的View组件按下面...
public IActionResult LoadVisit(int? id)
{
if (id == null || id == 0)
{
return NotFound();
}
return ViewComponent("ClientVisit", new { visitID = id.GetValueOrDefault() });
}
我ClientVisit查看组件具有以下...
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在View Component中不可用。编译错误_名称'Response'在当前上下文中不存在_ – OjM
它是如何检查来自'ViewComponent(“ClientVisit”,new {visitID = id.GetValueOrDefault()});'的结果'如: var view = ViewComponent(“ClientVisit”,new {visitID = id.GetValueOrDefault()}); if(view == null) Response.StatusCode =(int)HttpStatusCode。错误的请求; 返回null; } return view;' –
您可以在'HttpContext'中找到'Response'例如:'HttpContext.Response.StatusCode = ???;',但它仍然不起作用,因为“视图组件从不直接处理一个要求”。 –