Hoe roep je een andere controller actie van een controller in Mvc

Ik moet een controller B actie FileUploadMsgView oproepen vanuit Controller A en moet daarvoor een parameter doorgeven.

 Code---its not going to the controller B's FileUploadMsgView().
    In ControllerA
  private void Test()
    {

        try
        {//some codes here
            ViewBag.FileUploadMsg = "File uploaded successfully.";
            ViewBag.FileUploadFlag = "2";

            RedirectToAction("B", "FileUploadMsgView", new { FileUploadMsg = "File   uploaded successfully" });
        }

     In ControllerB receiving part
  public ActionResult FileUploadMsgView(string FileUploadMsg)
    {
         return View();
    }

Zoals @mxmissile zegt in de opmerkingen bij het geaccepteerde antwoord, moet je'de controller niet nieuw maken omdat het de afhankelijkheden zal missen die zijn ingesteld voor IoC en zal'de HttpContext niet hebben.

In plaats daarvan zou je een instantie van je controller moeten krijgen zoals dit:

var controller = DependencyResolver.Current.GetService();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext, controller);
Commentaren (12)
Oplossing

Controllers zijn gewoon klassen - maak er een nieuw en roep de actie methode op, net zoals je dat bij elk ander klasse lid zou doen:

var result = new ControllerB().FileUploadMsgView("some string");

Commentaren (12)

Je voorbeeld lijkt op pseudo code. Je moet het resultaat van RedirectToAction teruggeven:

return RedirectToAction("B", 
                        "FileUploadMsgView",
                        new { FileUploadMsg = "File uploaded successfully" });
Commentaren (2)