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

これはサービスによって異なります。

サービスレイヤーがsoapサービスの場合は、エラーをフォールトとして処理し、フォールトコントラクトを指定する必要があります。

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)を使用することを期待していることに注意してください。この場合、次の2つのタイプのいずれかである十分に文書化されたJSONを返したいと思うでしょう。

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

または、成功した場合は、「エラー」が設定されていない他のJSON。そうすれば、JSONPやCORSを使用したXHRなどの手法を含め、あらゆる種類のクライアントがWebサービスにアクセスできるようになります。

于 2013-02-20T02:58:04.023 に答える