0

我的服务层中有以下方法:

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() 操作只是调用它并重定向用户。

4

2 回答 2

1

这取决于服务。

如果服务层是一个肥皂服务,你应该把错误当作错误处理并指定一个错误契约。

http://msdn.microsoft.com/en-us/library/ms733721.aspx

如果您使用的是 RESTFul 服务,我总是返回一个指示服务操作是否成功的 Error 对象。

Class ErrorObject {

Bool IsOk

String ErrorMessage

String Trace

}  
于 2013-02-20T03:02:00.243 回答
0

这取决于您将与什么样的客户互动。由于您正在重定向客户端,因此听起来您目前不支持 AJAX 客户端。

在这种情况下,约定(由 Ruby on Rails 开始)是在成功结果后重定向,否则显示与操作对应的页面,但会出错。但请记住,大多数使用现代 Web 应用程序的人都希望使用 javascript 和异步请求 (AJAX)。在这种情况下,您可能希望返回记录良好的 JSON,它是以下两种类型之一:

{"error": {"code": ..., "fields": {"field1": "error message", "field2": "error message 2"}}

或其他一些没有设置“错误”的 JSON,如果成功的话。然后,各种客户端都可以访问您的 Web 服务,包括 JSONP 或带有 CORS 的 XHR 等技术。

于 2013-02-20T02:58:04.023 回答