C# 如何从驻留在不同控制器中的另一个操作调用操作

C# 如何从驻留在不同控制器中的另一个操作调用操作,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有一个控制器,它执行某些动作。现在,我需要某些功能(发送电子邮件)发生在上述控制器的中间 try { using (HttpClient client = new HttpClient()) { // Add an Accept header for JSON format client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("applica

我有一个控制器,它执行某些动作。现在,我需要某些功能(发送电子邮件)发生在上述控制器的中间

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);
   }
在我的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
         );
尝试:


通常我会说,如果需要从两个不同的控制器方法执行相同的代码,那么应该将代码提取到两个控制器都可以调用的公共方法中。话虽如此,如果你能解释一下你为什么要这么做,也许会有帮助,因为这将有助于给出一个更有针对性的答案。返回RedirectToAction(“创建”,“EmailReport”,new{numids=newnumids,To=toEmail});返回PartialView(“AddToPortalConfirmation”,portalVMList);您可以在一个操作中获得很少的返回。如果您在一个案例中调用redirect to action,以便该操作将返回视图如果您只想在操作2中执行一些代码,请不要使用操作,请使用共享服务方法
  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
         );
return RedirectToAction("Create", "EmailReport", new { numids = newnumids , To = toEmail});