我有一個執行某些操作的控制器。現在,我需要某些功能(發送電子郵件)在上述控制器中間發生。如何從其他操作中調用駐留在不同控制器中的操作
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
);
一般來說,我會說,如果你需要從兩個不同的控制器方法執行相同的代碼,你應該提取該代碼是兩個控制器可以調用的通用方法。話雖如此,如果你解釋爲什麼*你試圖這樣做,它可能會有所幫助,因爲這將有助於提供更有針對性的答案。 –