我有一个简单的DTO,里面只有一个Int:
[Route("/cells/{Id}")]
public class CellDetail
{
public int Id { get; set; }
}
使用像/cells/abc
这样的网址,在JSON中提供了RequestBindingException
,但HTML视图仍然通过我的.cshtml
文件呈现,由于@Model
=显然会失败= null。
不应该提供HTML错误页面吗?它如何知道选择哪个.cshtml视图?
答案 0 :(得分:1)
Razor Page允许您访问有关请求的错误信息:
object ModelError { get; } //The Error Response object
bool IsError { get; } //ModelError != null
ResponseStatus GetErrorStatus(); //ModelError in ResponseStatus
MvcHtmlString GetErrorMessage(); //Just the Error Message to display
它允许您呈现相同的页面,但以UX友好的方式显示上述错误信息。
一个方便的快捷方式,您可以添加到您的页面,只显示错误消息
@if (RenderErrorIfAny()) { return; }
将页面短路并以引导友好格式显示错误消息,如下所示:
<div id="error-response" class="alert alert-danger">
<h4>{ErrorCode} : {Message}</h4>
<pre>{StackTrace}</pre>
</div>
您还可以添加CSS以修改错误的外观。