2012-11-08 27 views
0

大家好我是MVC3的初學者。我的問題是關於使用類。我正在使用Web服務來獲取參數在這一點上,我沒有問題,但我的問題是,我一次又一次地定義每個控制器方法中的每個連接,所以有什麼shorcut?在MVC3中使用類

下面是一個例子:

public ActionResult BeyanListe() 
     { 

Services_building client = new Services_built(); 
      Services client_service = new Services(); 
      client_service.ClientCredentials.UserName.UserName = "service_test"; 
      client_service.ClientCredentials.UserName.Password = ".."; 
      client_service.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; 
      client.ClientCredentials.UserName.UserName = "service_test"; 
      client.ClientCredentials.UserName.Password = ".."; 
      client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; 

return View() 
} 

正如你可以看到上面我已經宣佈兩次,clientcredentials

回答

0

我假設兩個服務類都來自同一個接口,例如。 IServices,那麼:

private void AssignCredentials(IServices services) 
{ 
    services.ClientCredentials.UserName.UserName = "service_test"; 
    services.ClientCredentials.UserName.Password = ".."; 
    services.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; 
} 

並在你的基方法中調用AssignCredentials方法。

2
  1. 製作client_service和客戶端保護或控制器的私有成員。
  2. 將您的初始化代碼移到控制器的構造函數中。
  3. 根據需要在您的操作中使用client_service和client。

如果跨越多個控制器使用相同的模式,您可能需要考慮創建一個處理此功能的控制器基類。