ServiceStack 通过 Razor 模板呈现 RequestBindingException
ServiceStack renders RequestBindingException via Razor template
我有一个简单的 DTO,里面只有一个 Int:
[Route("/cells/{Id}")]
public class CellDetail
{
public int Id { get; set; }
}
使用像 /cells/abc
这样的 URL 在 JSON 中给出了 RequestBindingException
,但是 HTML 视图仍然通过我的 [=13= 呈现] 文件,显然由于 @Model
== null.
而失败
它不应该给出一个 HTML 错误页面吗?它怎么知道 select 是哪个 .cshtml 视图?
Razor 页面可让您访问有关请求的错误信息:
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
它可以让您呈现相同的页面,但以用户体验友好的方式显示上述错误信息。
您可以添加到页面以仅显示错误消息的便捷快捷方式是
@if (RenderErrorIfAny()) { return; }
这会使页面短路并以 bootstrap 友好的格式显示错误消息,如下所示:
<div id="error-response" class="alert alert-danger">
<h4>{ErrorCode} : {Message}</h4>
<pre>{StackTrace}</pre>
</div>
您还可以添加 CSS 来修改错误的外观。
我有一个简单的 DTO,里面只有一个 Int:
[Route("/cells/{Id}")]
public class CellDetail
{
public int Id { get; set; }
}
使用像 /cells/abc
这样的 URL 在 JSON 中给出了 RequestBindingException
,但是 HTML 视图仍然通过我的 [=13= 呈现] 文件,显然由于 @Model
== null.
它不应该给出一个 HTML 错误页面吗?它怎么知道 select 是哪个 .cshtml 视图?
Razor 页面可让您访问有关请求的错误信息:
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
它可以让您呈现相同的页面,但以用户体验友好的方式显示上述错误信息。
您可以添加到页面以仅显示错误消息的便捷快捷方式是
@if (RenderErrorIfAny()) { return; }
这会使页面短路并以 bootstrap 友好的格式显示错误消息,如下所示:
<div id="error-response" class="alert alert-danger">
<h4>{ErrorCode} : {Message}</h4>
<pre>{StackTrace}</pre>
</div>
您还可以添加 CSS 来修改错误的外观。