2012-02-29 16 views
1

私は2つの独立したコントローラをプロジェクト内の2つの別々の領域に持っています。ASP.NET MVCの領域間で同じコントローラコードを共有

2つの唯一の違いは、ベースコントローラです。

  1. BrowsingSessionController:Area1BaseController
  2. BrowsingSessionController:Area2BaseController

コントローラ自体はかなり肉であり、条件に基づいてViewsまたはRedirectToActionsを返します。

DRYの原則を遵守してコントローラの構造を維持する方法を考えたが、コードを繰り返さないようにしたいと思う。

方法のサンプル

BrowsingSessionControllerContent

... 
case ("byexpiry"): // Expiry Grid 

    currentTemplateModel._TemplateExpiry = 
     _browsingSessionTemplateRepository.GetBrowsingSessionLeadExpiryTemplateById(currentTemplateModel.Id); 
    return View("SessionExpiryGrid", 
       new SessionExpiryGridModel() 
       { 
        ActiveBrowsingSessionTemplate = currentTemplateModel, 
        SessionGuid = guid 
       }); 
... 

答えて

1

これは、コントローラ間でロジックを共有するために組成物ではなく、継承を使用することが多い方が良いです。

静的ユーティリティクラスを使用して共通ロジックをカプセル化し、コントローラコードから呼び出すことができます。

そのロジックはベースエリアに存在します。

関連する問題