2015-05-01 49 views
1

我有一個執行某些操作的控制器。現在,我需要某些功能(發送電子郵件)在上述控制器中間發生。如何從其他操作中調用駐留在不同控制器中的操作

try 
    { 
    using (HttpClient client = new HttpClient()) 
     { 
     // Add an Accept header for JSON format 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     response = client.PostAsJsonAsync(URLForReportsapi + "InsertOrUpdatePortal", criteria).Result; 
     } 
     // Throw exception if not a success code. 
     response.EnsureSuccessStatusCode(); 
     // Parse the response body. 
     var pVMRslt = response.Content.ReadAsStringAsync().Result; 
     var pVMRsltDsrlz = JsonConvert.DeserializeObject<List<PortalInfoVM>>(pVMRslt); 
     portalVMList = pVMRsltDsrlz.ToList(); 
     var newnumids = portalVMList.Where(c => c.isNewStatus == "NEW").Select(c => c. numid).ToList(); 
//-------- Here I need to call another action which is residing inside another controller. 
     return PartialView("AddToPortalConfirmation", portalVMList); 
    } 

在上面的代碼調用partialview之前,我需要調用它駐留在不同的控制器內的另一個動作,並返回到PartialView("AddToPortalConfirmation", portalVMList)

我試圖做這樣的事情,但是這是不工作。

var resp = RedirectToAction("Create", "EmailReport", new { numids = newnumids , To = toEmail}); 

在我routeconfig.cs我有

routes.MapRoute(
      null, // Route name 
      "EmailReport/Create/{To}/{numids }", // URL with parameters 
      new { controller = "EmailReport", action = "Create", To = string.Empty, numids = string.Empty } // Parameter defaults 
     ); 
+0

一般來說,我會說,如果你需要從兩個不同的控制器方法執行相同的代碼,你應該提取該代碼是兩個控制器可以調用的通用方法。話雖如此,如果你解釋爲什麼*你試圖這樣做,它可能會有所幫助,因爲這將有助於提供更有針對性的答案。 –

回答

0

嘗試:

return RedirectToAction("Create", "EmailReport", new { numids = newnumids , To = toEmail}); 
+0

我不能有兩個回報。返回RedirectToAction(「創建」,「EmailReport」,新{numids = newnumids,To = toEmail});返回PartialView(「AddToPortalConfirmation」,portalVMList); – BumbleBee

+0

您可以在一個動作中獲得少量回報。如果您在某個案例中調用重定向至動作,以便動作返回視圖 –

+0

如果您只想在動作2中執行一些代碼,請勿使用動作,請使用共享服務方法 –

相關問題