我的服务层中有以下方法:
public void DeleteOrder(int orderId)
{
var order = _db.Order.FirstOrDefault(c => c.OrderId == orderId);
if (order == null)
{
// error handling
}
_db.Orders.Remove(order);
_db.SaveChanges();
}
在向控制器返回内容方面,最佳做法是什么?目前Remove()操作只是调用它并重定向用户。
答案 0 :(得分:1)
这取决于服务。
如果服务层是肥皂服务,您应该将错误视为错误并指定错误合同。
http://msdn.microsoft.com/en-us/library/ms733721.aspx
如果您正在使用RESTFul服务,我总是返回一个Error对象,指示服务操作是否成功。
Class ErrorObject {
Bool IsOk
String ErrorMessage
String Trace
}
答案 1 :(得分:0)
这取决于您将与哪种客户进行互动。由于您正在重定向客户端,听起来您现在不支持AJAX客户端。
在这种情况下,约定(由Ruby on Rails启动)是在成功结果后重定向,否则显示与操作对应的页面,并显示错误。但请记住,大多数使用现代Web应用程序的人都希望使用javascript和异步请求(AJAX)。在这种情况下,您可能希望返回记录良好的JSON,它是以下两种类型之一:
{"error": {"code": ..., "fields": {"field1": "error message", "field2": "error message 2"}}
或其他一些没有设置“错误”的JSON,如果成功的话。然后,各种类型的客户都可以访问您的Web服务,包括JSONP或带有CORS的XHR等技术。