How to call another controller Action From a controller in Mvc
I need to call a controller B action FileUploadMsgView from Controller A and need to pass a parameter for it.
Its not going to the controller B's FileUploadMsgView()
.
Here's the code:
ControllerA:
private void Test()
{
try
{ //some codes here
ViewBag.FileUploadMsg = "File uploaded successfully.";
ViewBag.FileUploadFlag = "2";
RedirectToAction("B", "FileUploadMsgView", new { FileUploadMsg = "File uploaded successfully" });
}
}
ControllerB (receiving part):
public ActionResult FileUploadMsgView(string FileUploadMsg)
{
return View();
}
Solution 1:
As @mxmissile says in the comments to the accepted answer, you shouldn't new up the controller because it will be missing dependencies set up for IoC and won't have the HttpContext
.
Instead, you should get an instance of your controller like this:
var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext, controller);
Solution 2:
Controllers are just classes - new one up and call the action method just like you would any other class member:
var result = new ControllerB().FileUploadMsgView("some string");