我想從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 = ???;',但它仍然不起作用,因爲「視圖組件從不直接處理一個要求」。 –