2010-08-16 46 views
0

我有一个主 - 细节视图,用于在ASP NET 3.5 MVC 1.0应用程序中添加,删除和更新客户。例如,用户应该能够从列表中选择要编辑的客户,并在页面底部显示详细的表单以供他/她编辑客户的数据。使用Ajax在ASP NET MVC验证失败时返回500错误可以吗?

当用户接受更改时,数据通过Ajax POST提交给服务器。验证仅在服务器端执行。

  • 如果验证失败,我希望客户数据的表单重新加载,显示所有验证错误。如果
  • 如果验证成功,我希望整个客户列表重新加载所有新客户的数据(或者我只能重新加载正在编辑的客户记录)。

现在到了。我正考虑在第一种情况下返回带有验证错误的表单的部分视图,或者在第二种情况下使用客户列表的部分视图。

为了区别该页面的一部分应该更新,返回一个500或200状态码,并使用Ajax 失败succeess函数来执行更新。

我的问题是:使用500错误(内部服务器错误)来表示验证失败时,它在语义上是正确的吗?或者我应该返回一个包含isValid布尔值以及HTML正文的JSON对象,并避免依赖于状态码?

谢谢!

回答

2

我一般认为返回HTTP级别的错误是保留的,当事情实际上被破坏而不是处理应用程序层错误的方式。很像在逻辑数据验证失败时不一定要抛出异常。所以我会投票传递一个json结果对象来包装错误(或不)。

0

这真的取决于你。在不了解所有需求,底层基础设施和时间限制的情况下,无法做出判断。