MVCコントローラを別のクラスの小さな部品にリファクタリングしています。私は "return StatusCode(500、" Someメッセージ ")"項目。MVCコントローラの外でStatusCodeオブジェクトを返す方法
コントローラーの外でこれを行うことができないかのように思えます。
これは可能ですか、または応答を返す別の方法を見つけて、呼び出しコード(MVCコントローラ)の適切な型に戻しますか?
MVCアクションの元のタイプはIActionResultなので、私は適切なレスポンスを返してきました。時にはview(、model)、時にはJson()と他の時StatusCode(< 500>)、すなわち私の応答は一貫していません。
このコードをピックアップして別のクラスに移動して正常に動作させるための自然な方法がありますか、そうでなければコントローラで返されたものを表現するために独自のオブジェクトを作成する必要があります。だから、何がお勧めですか?要するに
、理想的に私は、コントローラの外部のクラスでは、このような「ビューを返します(」私のビュー名」、mymodelという)として行動した結果を返すことができるようにしたい。 どのように私はこの?
を達成することができます「StatusCode」、「Json」、および「View」の値を持つ、ステータスコード、メッセージ、オブジェクト(モデルとして機能する)、ビュー名、およびActionResultTypeという新しい列挙型を含む単一オブジェクトです。コントローラーが応答を受け取ったときに適切な自然状態に戻すことができます。
おそらく私は少し遠くに行くでしょうが、代わりにロジックの主要部分を取り出すことに集中すべきです他のどこかでより鮮明な応答を構築しようとするよりも、
可能であれば、私は各アクションの結果を約10行にしたいと思いますが、他の場所から適切な応答を返す良い方法を見つけ出すことができない限り、おそらく闘争になります。
あなたのコントローラの外のロジックは、HTTPエラーコードを知らないで気にしないでください。 – DavidG
これらはすべて基本型のActionResultを持っているので、問題の原因がわかりません。 –
あなたは "InternalServerErrorを返す(新しい例外("いくつかのカスタムメッセージ "));" –