0

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

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

使用类似的 URL在 JSON 中/cells/abc给出了一个RequestBindingException,但 HTML 视图仍然通过我的.cshtml文件呈现,这显然由于@Model== null 而失败。

它不应该给出一个 HTML 错误页面吗?它怎么知道要选择哪个 .cshtml 视图?

4

1 回答 1

1

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

这使您可以呈现相同的页面,但以 UX 友好的方式显示上述错误信息。

您可以添加到页面中以仅显示错误消息的便捷快捷方式是

@if (RenderErrorIfAny()) { return; }

这会使页面短路并以引导友好的格式显示错误消息,如下所示:

<div id="error-response" class="alert alert-danger">
    <h4>{ErrorCode} : {Message}</h4>
    <pre>{StackTrace}</pre>
</div>

您还可以添加 CSS 来修改错误的外观。

于 2015-10-12T12:27:28.817 回答