OjM*_*OjM 6 c# asp.net-core asp.net-core-viewcomponent
我试图从 Asp.Net Core 中的视图组件返回 HTTP 500 或 BadRequest() 结果,但是此返回类型似乎不适用于视图组件。状态代码返回类型是否可用于视图组件,或者我的设计是否错误?
\n\n我正在通过 ajax 调用我的控制器操作,如下所示......
\n\n<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,\xc2\xa0status,\xc2\xa0error)" role="button"><i class="fa fa-folder-open-o"></i></a>\nRun Code Online (Sandbox Code Playgroud)\n\n我的控制器操作正在调用/返回我的视图组件,如下所示......
\n\npublic IActionResult LoadVisit(int? id)\n{\n\n if (id == null || id == 0)\n {\n return NotFound();\n }\n\n return ViewComponent("ClientVisit", new { visitID = id.GetValueOrDefault() });\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的 ClientVisit 视图组件具有以下内容...
\n\npublic async Task<IViewComponentResult> InvokeAsync(int? clientID, int? visitID)\n{\n\n try\n {\n var model = new VisitViewModel();\n model = await visitAPI.GetVisit(clientID, visitID);\n return View(model);\n }\n catch (Exception ex)\n {\n return Content(ex.Message);\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当我的数据库调用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;
}
Run Code Online (Sandbox Code Playgroud)