ServiceStack通过Razor模板呈现RequestBindingException

时间:2015-10-12 11:41:29

标签: servicestack servicestack-razor

我有一个简单的DTO,里面只有一个Int:

[Route("/cells/{Id}")]
public class CellDetail 
{
    public int Id { get; set; }
}

使用像/cells/abc这样的网址,在JSON中提供了RequestBindingException,但HTML视图仍然通过我的.cshtml文件呈现,由于@Model =显然会失败= null。

不应该提供HTML错误页面吗?它如何知道选择哪个.cshtml视图?

1 个答案:

答案 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以修改错误的外观。