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});