コントローラーは特定の要求 (顧客の取得、顧客の表示、請求書の作成) に対応することに注意してください。
あなたの場合、「顧客コントローラーに顧客を作成させる」必要はありません。
たとえば、「GetCustomer」と呼ばれる通常のメソッドを作成するだけです。これは、複数のコントローラーから呼び出すことができます。このメソッドはどこにでも存在する可能性があります-おそらくモデル名前空間のヘルパーアセンブリにあります(モデルが別のクラスライブラリにあると仮定します)。Invoice コントローラーからこれを呼び出すだけです。
コントローラーから前後に移動したくない-これはMVCの原則に反します。
そのはず
URL Request -> Controller -> Model -> Controller -> View
.
いいえ
URL Request -> Controller -> Controller -> Model -> Controller -> View.
これが私の言いたいことです。
顧客コントローラー:
public ActionResult Index(int customerId)
{
var customer = Model.GetCustomerById(customerId);
return View(customer);
}
請求書管理者:
public ActionResult GetInvoice(int customerId)
{
var customer = Model.GetCustomerById(customerId);
return View("Invoice", customer);
}
モデル:
public Customer GetCustomerById(int customerId)
{
var customer = yourDatabaseRepository.GetCustomerById(customerId);
}
わかる?重要なのは、「GetCustomer」ロジックをコントローラーに配置しないことです-モデルに抽象化します-すべてのコントローラーからアクセスできます。