2

私は、ASP.NET MVC のコア機能になると思われる独自のロジックを作成しました。カスタムコードなしでこれを達成する方法を誰かが教えてくれるか、MVCチームの誰かがそれを見て重要性を認識し、MVCの将来のリリースでこれを実装することを期待して、ここに投稿しています.

したがって、モデルは常に EF オブジェクトであるとは限りません。モデルは別のものである可能性があり、他のリソースが含まれている可能性があります。特に、ViewModels の概念を使用する場合は、モデル情報とビューを提供する必要があるその他のものがあります。

とにかく、IDisposable であるモデルを見つけたので、それらを破棄する方法が必要でした。

多くの試行錯誤の後、IDisposable モデルを破棄する次の属性にたどり着きました。これは私のベース Controller クラスをデコレートするため、実行されたすべてのアクションで機能します。

internal class ModelDisposerAttribute : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
            var model = filterContext.Controller.ViewData.Model as IDisposable;
            if (model != null)
                    model.Dispose();

            base.OnResultExecuted(filterContext);
    }
}

あなたの考えを聞いてうれしいです!:)

乾杯。

4

1 に答える 1

0

フレームワークは、ActionResult を返した後、最も確実にモデルにアクセスします。ActionResults には、コンテンツを生成するために呼び出される Execute() メソッドがあります。

コントローラー内で何かを破棄する必要がある場合は、Controller.Dispose() をオーバーライドできます。そのメソッド内からモデルを破棄できます

asp.net mvc では、IDisposable モデルを使用しても安全ですか?

于 2013-03-28T07:11:05.283 に答える