我最近收到了一位同事关于我的网站源代码的反馈。他说,不优雅地处理可视化界面不允许做的事情是一种不好的做法。
由于不是很清楚,这里举个例子。
假设访问者可以发表评论。
nvarchar(500) 中。柱子。 <input />字段长度限制为 500。但是,当然,没有什么禁止更高级的用户禁用长度限制并键入 501 字符。
(其他示例:提交一个甚至不存在于
<select /> 中的选项。但是当用户被要求输入一个数字时会出现一个优雅的错误,而她输入了一个非数字,因为按键事件是通过 JavaScript 控制的, 并且 JavaScript 可能被禁用)
如果访问者这样做,则会在代码契约(Contract)级别上失败。 AJAX 请求将因意外错误而失败(或者,在页面提交时,将出现意外错误)。在所有情况下,访问者都会看到发生了错误,但不会有优雅的消息表明提交的评论长度太长。
为什么这是不好的做法?为什么我要为正确使用网站的访问者永远不会遇到的情况设计清晰明确的错误消息?
注意:我知道在发生这样的事情时显示 .NET Framework 详细错误和堆栈跟踪很糟糕。如果我这样做,这是一个严重的安全问题。但就我而言,只有一个带有非常通用的 AJAX 响应或重定向到通用页面,并为错误道歉。
请您参考如下方法:
由于每个人似乎都错过了您的实际问题,因此我将输入 2c(尽管毫无疑问我会因为报复而被否决)
只要您的输入在服务器端得到验证(您的客户端 maxlength 可能没问题,尽管一些晦涩的浏览器可能不支持它),只要它不包含异常信息(您已经说明),您就可以返回一般错误消息没有)。
但是,如果可能由于缺少 javascript 或不正确的输入而导致验证失败,那么为了用户的理智,应该提供自定义错误消息。
简而言之,你正在做的很好。




