0

私は2つのコントローラーを持っていCustomerControllerますPrivatemessageController

お客様にはアクションなしの方法があります

private readonly ICustomerService _customerService; 
public Customer(....)   << autofac Ioc 
{
 }

    [NonAction]
    protected CustomerNavigationModel GetCustomerNavigationModel(Customer customer)
    {
        var model = new CustomerNavigationModel();

        .... _customerSerice...
        return model;
    }

同じメソッドを再作成したくないので、GetCustomerNavigationModel値を取得したいのですが、ASP.NET MVC 3.0でそれは可能ですか?CustomerControllerPrivateMessageController

4

2 に答える 2

1

ここで2つのオプションが思い浮かびます。

  1. メソッドをpublicstaticにします。

        [NonAction]
        public static CustomerNavigationModel GetCustomerNavigationModel(Customer customer)
        {
            var model = new CustomerNavigationModel();
    
            .... _customerSerice...
            return model;
        }
    
  2. ベースコントローラーを作成し、そこにメソッドを実装します。両方のコントローラーをベースコントローラーから派生させます。

    public abstract class MyBaseController : Controller
    {
        [NonAction]
        protected CustomerNavigationModel GetCustomerNavigationModel(Customer customer)
        {
            var model = new CustomerNavigationModel();
    
            .... _customerSerice...
            return model;
        }
    }
    
    
    public class CustomerController : MyBaseController
    {
        ....
    }
    
    public class PrivatemessageController : MyBaseController
    {
        ....
    }
    
于 2012-08-05T09:20:29.383 に答える
0

メソッドを別のクラスにリファクタリングし、コントローラーからそのクラスを使用します。メソッドを静的にし、 PrivatemessageControllerから次のコマンドを使用して呼び出すこともできます。

CustomerController.GetCustomerNavigationModel(customer);
于 2012-08-05T09:20:19.240 に答える